/ Hex Artifact Content
Login

Artifact f7414c1d902688825ca11f7f5e03628704d903b5:


0000: 23 20 32 30 30 32 20 4d 61 72 63 68 20 36 0a 23  # 2002 March 6.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69 6c 65  ****.# This file
0170: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67 72   implements regr
0180: 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66 6f 72  ession tests for
0190: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
01a0: 0a 23 0a 23 20 54 68 69 73 20 66 69 6c 65 20 69  .#.# This file i
01b0: 6d 70 6c 65 6d 65 6e 74 73 20 74 65 73 74 73 20  mplements tests 
01c0: 66 6f 72 20 74 68 65 20 50 52 41 47 4d 41 20 63  for the PRAGMA c
01d0: 6f 6d 6d 61 6e 64 2e 0a 23 0a 23 20 24 49 64 3a  ommand..#.# $Id:
01e0: 20 70 72 61 67 6d 61 2e 74 65 73 74 2c 76 20 31   pragma.test,v 1
01f0: 2e 31 36 20 32 30 30 34 2f 30 37 2f 32 32 20 31  .16 2004/07/22 1
0200: 35 3a 30 32 3a 32 36 20 64 72 68 20 45 78 70 20  5:02:26 drh Exp 
0210: 24 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b  $..set testdir [
0220: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72  file dirname $ar
0230: 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73  gv0].source $tes
0240: 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a  tdir/tester.tcl.
0250: 0a 23 20 54 65 73 74 20 6f 72 67 61 6e 69 7a 61  .# Test organiza
0260: 74 69 6f 6e 3a 0a 23 0a 23 20 70 72 61 67 6d 61  tion:.#.# pragma
0270: 2d 31 2e 2a 3a 20 54 65 73 74 20 63 61 63 68 65  -1.*: Test cache
0280: 5f 73 69 7a 65 2c 20 64 65 66 61 75 6c 74 5f 63  _size, default_c
0290: 61 63 68 65 5f 73 69 7a 65 20 61 6e 64 20 73 79  ache_size and sy
02a0: 6e 63 68 72 6f 6e 6f 75 73 20 6f 6e 20 6d 61 69  nchronous on mai
02b0: 6e 20 64 62 2e 0a 23 20 70 72 61 67 6d 61 2d 32  n db..# pragma-2
02c0: 2e 2a 3a 20 54 65 73 74 20 73 79 6e 63 68 72 6f  .*: Test synchro
02d0: 6e 6f 75 73 20 6f 6e 20 61 74 74 61 63 68 65 64  nous on attached
02e0: 20 64 62 2e 0a 23 20 70 72 61 67 6d 61 2d 33 2e   db..# pragma-3.
02f0: 2a 3a 20 54 65 73 74 20 64 65 74 65 63 74 69 6f  *: Test detectio
0300: 6e 20 6f 66 20 74 61 62 6c 65 2f 69 6e 64 65 78  n of table/index
0310: 20 69 6e 63 6f 6e 73 69 73 74 65 6e 63 79 20 62   inconsistency b
0320: 79 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  y integrity_chec
0330: 6b 2e 0a 23 20 70 72 61 67 6d 61 2d 34 2e 2a 3a  k..# pragma-4.*:
0340: 20 54 65 73 74 20 63 61 63 68 65 5f 73 69 7a 65   Test cache_size
0350: 20 61 6e 64 20 64 65 66 61 75 6c 74 5f 63 61 63   and default_cac
0360: 68 65 5f 73 69 7a 65 20 6f 6e 20 61 74 74 61 63  he_size on attac
0370: 68 65 64 20 64 62 2e 0a 23 20 70 72 61 67 6d 61  hed db..# pragma
0380: 2d 35 2e 2a 3a 20 54 65 73 74 20 74 68 61 74 20  -5.*: Test that 
0390: 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e 6f  pragma synchrono
03a0: 75 73 20 6d 61 79 20 6e 6f 74 20 62 65 20 75 73  us may not be us
03b0: 65 64 20 69 6e 73 69 64 65 20 6f 66 20 61 0a 23  ed inside of a.#
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
03d0: 6e 73 61 63 74 69 6f 6e 2e 0a 23 0a 0a 23 20 44  nsaction..#..# D
03e0: 65 6c 65 74 65 20 74 68 65 20 70 72 65 65 78 69  elete the preexi
03f0: 73 74 69 6e 67 20 64 61 74 61 62 61 73 65 20 74  sting database t
0400: 6f 20 61 76 6f 69 64 20 74 68 65 20 73 70 65 63  o avoid the spec
0410: 69 61 6c 20 73 65 74 75 70 0a 23 20 74 68 61 74  ial setup.# that
0420: 20 74 68 65 20 22 61 6c 6c 2e 74 65 73 74 22 20   the "all.test" 
0430: 73 63 72 69 70 74 20 64 6f 65 73 2e 0a 23 0a 64  script does..#.d
0440: 62 20 63 6c 6f 73 65 0a 66 69 6c 65 20 64 65 6c  b close.file del
0450: 65 74 65 20 74 65 73 74 2e 64 62 0a 73 65 74 20  ete test.db.set 
0460: 44 42 20 5b 73 71 6c 69 74 65 33 20 64 62 20 74  DB [sqlite3 db t
0470: 65 73 74 2e 64 62 5d 0a 0a 64 6f 5f 74 65 73 74  est.db]..do_test
0480: 20 70 72 61 67 6d 61 2d 31 2e 31 20 7b 0a 20 20   pragma-1.1 {.  
0490: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
04a0: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b  AGMA cache_size;
04b0: 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61  .    PRAGMA defa
04c0: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a  ult_cache_size;.
04d0: 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68      PRAGMA synch
04e0: 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 32  ronous;.  }.} {2
04f0: 30 30 30 20 32 30 30 30 20 32 7d 0a 64 6f 5f 74  000 2000 2}.do_t
0500: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 32 20 7b  est pragma-1.2 {
0510: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0520: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
0530: 7a 65 3d 31 32 33 34 3b 0a 20 20 20 20 50 52 41  ze=1234;.    PRA
0540: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a  GMA cache_size;.
0550: 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75      PRAGMA defau
0560: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
0570: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0580: 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32  onous;.  }.} {12
0590: 33 34 20 32 30 30 30 20 32 7d 0a 64 6f 5f 74 65  34 2000 2}.do_te
05a0: 73 74 20 70 72 61 67 6d 61 2d 31 2e 33 20 7b 0a  st pragma-1.3 {.
05b0: 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c    db close.  sql
05c0: 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a  ite3 db test.db.
05d0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
05e0: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
05f0: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65  e;.    PRAGMA de
0600: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
0610: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e  ;.    PRAGMA syn
0620: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20  chronous;.  }.} 
0630: 7b 32 30 30 30 20 32 30 30 30 20 32 7d 0a 64 6f  {2000 2000 2}.do
0640: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 34  _test pragma-1.4
0650: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0660: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0670: 6f 6e 6f 75 73 3d 4f 46 46 3b 0a 20 20 20 20 50  onous=OFF;.    P
0680: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
0690: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66  ;.    PRAGMA def
06a0: 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b  ault_cache_size;
06b0: 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63  .    PRAGMA sync
06c0: 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b  hronous;.  }.} {
06d0: 32 30 30 30 20 32 30 30 30 20 30 7d 0a 64 6f 5f  2000 2000 0}.do_
06e0: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 35 20  test pragma-1.5 
06f0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0700: 20 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73    PRAGMA cache_s
0710: 69 7a 65 3d 34 33 32 31 3b 0a 20 20 20 20 50 52  ize=4321;.    PR
0720: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b  AGMA cache_size;
0730: 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61  .    PRAGMA defa
0740: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a  ult_cache_size;.
0750: 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68      PRAGMA synch
0760: 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 34  ronous;.  }.} {4
0770: 33 32 31 20 32 30 30 30 20 30 7d 0a 64 6f 5f 74  321 2000 0}.do_t
0780: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 36 20 7b  est pragma-1.6 {
0790: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
07a0: 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e   PRAGMA synchron
07b0: 6f 75 73 3d 4f 4e 3b 0a 20 20 20 20 50 52 41 47  ous=ON;.    PRAG
07c0: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
07d0: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
07e0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
07f0: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0800: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 34 33 32  nous;.  }.} {432
0810: 31 20 32 30 30 30 20 31 7d 0a 64 6f 5f 74 65 73  1 2000 1}.do_tes
0820: 74 20 70 72 61 67 6d 61 2d 31 2e 37 20 7b 0a 20  t pragma-1.7 {. 
0830: 20 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69   db close.  sqli
0840: 74 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 20  te3 db test.db. 
0850: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50   execsql {.    P
0860: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
0870: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66  ;.    PRAGMA def
0880: 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b  ault_cache_size;
0890: 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63  .    PRAGMA sync
08a0: 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b  hronous;.  }.} {
08b0: 32 30 30 30 20 32 30 30 30 20 32 7d 0a 64 6f 5f  2000 2000 2}.do_
08c0: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 38 20  test pragma-1.8 
08d0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
08e0: 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74    PRAGMA default
08f0: 5f 63 61 63 68 65 5f 73 69 7a 65 3d 31 32 33 3b  _cache_size=123;
0900: 0a 20 20 20 20 50 52 41 47 4d 41 20 63 61 63 68  .    PRAGMA cach
0910: 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41 47  e_size;.    PRAG
0920: 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65  MA default_cache
0930: 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d  _size;.    PRAGM
0940: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20  A synchronous;. 
0950: 20 7d 0a 7d 20 7b 31 32 33 20 31 32 33 20 32 7d   }.} {123 123 2}
0960: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
0970: 31 2e 39 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65  1.9 {.  db close
0980: 0a 20 20 73 65 74 20 3a 3a 44 42 20 5b 73 71 6c  .  set ::DB [sql
0990: 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 62 5d  ite3 db test.db]
09a0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
09b0: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
09c0: 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64  ze;.    PRAGMA d
09d0: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
09e0: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79  e;.    PRAGMA sy
09f0: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d  nchronous;.  }.}
0a00: 20 7b 31 32 33 20 31 32 33 20 32 7d 0a 64 6f 5f   {123 123 2}.do_
0a10: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 30  test pragma-1.10
0a20: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0a30: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0a40: 6f 6e 6f 75 73 3d 4e 4f 52 4d 41 4c 3b 0a 20 20  onous=NORMAL;.  
0a50: 20 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73    PRAGMA cache_s
0a60: 69 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20  ize;.    PRAGMA 
0a70: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
0a80: 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  ze;.    PRAGMA s
0a90: 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a  ynchronous;.  }.
0aa0: 7d 20 7b 31 32 33 20 31 32 33 20 31 7d 0a 64 6f  } {123 123 1}.do
0ab0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31  _test pragma-1.1
0ac0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
0ad0: 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68      PRAGMA synch
0ae0: 72 6f 6e 6f 75 73 3d 46 55 4c 4c 3b 0a 20 20 20  ronous=FULL;.   
0af0: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
0b00: 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64  ze;.    PRAGMA d
0b10: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
0b20: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79  e;.    PRAGMA sy
0b30: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d  nchronous;.  }.}
0b40: 20 7b 31 32 33 20 31 32 33 20 32 7d 0a 64 6f 5f   {123 123 2}.do_
0b50: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 32  test pragma-1.12
0b60: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20   {.  db close.  
0b70: 73 65 74 20 3a 3a 44 42 20 5b 73 71 6c 69 74 65  set ::DB [sqlite
0b80: 33 20 64 62 20 74 65 73 74 2e 64 62 5d 0a 20 20  3 db test.db].  
0b90: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
0ba0: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b  AGMA cache_size;
0bb0: 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61  .    PRAGMA defa
0bc0: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a  ult_cache_size;.
0bd0: 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68      PRAGMA synch
0be0: 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31  ronous;.  }.} {1
0bf0: 32 33 20 31 32 33 20 32 7d 0a 0a 23 20 4d 61 6b  23 123 2}..# Mak
0c00: 65 20 73 75 72 65 20 74 68 65 20 70 72 61 67 6d  e sure the pragm
0c10: 61 20 68 61 6e 64 6c 65 72 20 75 6e 64 65 72 73  a handler unders
0c20: 74 61 6e 64 73 20 6e 75 6d 65 72 69 63 20 76 61  tands numeric va
0c30: 6c 75 65 73 20 69 6e 20 61 64 64 69 74 69 6f 6e  lues in addition
0c40: 0a 23 20 74 6f 20 6b 65 79 77 6f 72 64 73 20 6c  .# to keywords l
0c50: 69 6b 65 20 22 6f 66 66 22 20 61 6e 64 20 22 66  ike "off" and "f
0c60: 75 6c 6c 22 2e 0a 23 0a 64 6f 5f 74 65 73 74 20  ull"..#.do_test 
0c70: 70 72 61 67 6d 61 2d 31 2e 31 33 20 7b 0a 20 20  pragma-1.13 {.  
0c80: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
0c90: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
0ca0: 3d 30 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  =0;.    PRAGMA s
0cb0: 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a  ynchronous;.  }.
0cc0: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {0}.do_test pr
0cd0: 61 67 6d 61 2d 31 2e 31 34 20 7b 0a 20 20 65 78  agma-1.14 {.  ex
0ce0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0cf0: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 32  MA synchronous=2
0d00: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e  ;.    PRAGMA syn
0d10: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20  chronous;.  }.} 
0d20: 7b 32 7d 0a 0a 23 20 54 65 73 74 20 74 75 72 6e  {2}..# Test turn
0d30: 69 6e 67 20 22 66 6c 61 67 22 20 70 72 61 67 6d  ing "flag" pragm
0d40: 61 73 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 0a 23  as on and off..#
0d50: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
0d60: 31 2e 31 35 20 7b 0a 20 20 65 78 65 63 73 71 6c  1.15 {.  execsql
0d70: 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 76 64   {.    PRAGMA vd
0d80: 62 65 5f 6c 69 73 74 69 6e 67 3d 59 45 53 3b 0a  be_listing=YES;.
0d90: 20 20 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f      PRAGMA vdbe_
0da0: 6c 69 73 74 69 6e 67 3b 0a 20 20 7d 0a 7d 20 7b  listing;.  }.} {
0db0: 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  1}.do_test pragm
0dc0: 61 2d 31 2e 31 36 20 7b 0a 20 20 65 78 65 63 73  a-1.16 {.  execs
0dd0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
0de0: 76 64 62 65 5f 6c 69 73 74 69 6e 67 3d 4e 4f 3b  vdbe_listing=NO;
0df0: 0a 20 20 20 20 50 52 41 47 4d 41 20 76 64 62 65  .    PRAGMA vdbe
0e00: 5f 6c 69 73 74 69 6e 67 3b 0a 20 20 7d 0a 7d 20  _listing;.  }.} 
0e10: 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {0}.do_test prag
0e20: 6d 61 2d 31 2e 31 37 20 7b 0a 20 20 65 78 65 63  ma-1.17 {.  exec
0e30: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
0e40: 20 70 61 72 73 65 72 5f 74 72 61 63 65 3d 4f 4e   parser_trace=ON
0e50: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 70 61 72  ;.    PRAGMA par
0e60: 73 65 72 5f 74 72 61 63 65 3d 4f 46 46 3b 0a 20  ser_trace=OFF;. 
0e70: 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20   }.} {}.do_test 
0e80: 70 72 61 67 6d 61 2d 31 2e 31 38 20 7b 0a 20 20  pragma-1.18 {.  
0e90: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
0ea0: 41 47 4d 41 20 62 6f 67 75 73 20 3d 20 2d 31 32  AGMA bogus = -12
0eb0: 33 34 3b 20 20 2d 2d 20 50 61 72 73 69 6e 67 20  34;  -- Parsing 
0ec0: 6f 66 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75  of negative valu
0ed0: 65 73 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 54  es.  }.} {}..# T
0ee0: 65 73 74 20 6d 6f 64 69 66 79 69 6e 67 20 74 68  est modifying th
0ef0: 65 20 73 61 66 65 74 79 5f 6c 65 76 65 6c 20 6f  e safety_level o
0f00: 66 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  f an attached da
0f10: 74 61 62 61 73 65 2e 0a 64 6f 5f 74 65 73 74 20  tabase..do_test 
0f20: 70 72 61 67 6d 61 2d 32 2e 31 20 7b 0a 20 20 66  pragma-2.1 {.  f
0f30: 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63  ile delete -forc
0f40: 65 20 74 65 73 74 32 2e 64 62 0a 20 20 66 69 6c  e test2.db.  fil
0f50: 65 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20  e delete -force 
0f60: 74 65 73 74 32 2e 64 62 2d 6a 6f 75 72 6e 61 6c  test2.db-journal
0f70: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0f80: 20 41 54 54 41 43 48 20 27 74 65 73 74 32 2e 64   ATTACH 'test2.d
0f90: 62 27 20 41 53 20 61 75 78 3b 0a 20 20 7d 20 0a  b' AS aux;.  } .
0fa0: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  } {}.do_test pra
0fb0: 67 6d 61 2d 32 2e 32 20 7b 0a 20 20 65 78 65 63  gma-2.2 {.  exec
0fc0: 73 71 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61  sql {.    pragma
0fd0: 20 61 75 78 2e 73 79 6e 63 68 72 6f 6e 6f 75 73   aux.synchronous
0fe0: 3b 0a 20 20 7d 20 0a 7d 20 7b 32 7d 0a 64 6f 5f  ;.  } .} {2}.do_
0ff0: 74 65 73 74 20 70 72 61 67 6d 61 2d 32 2e 33 20  test pragma-2.3 
1000: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1010: 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73 79 6e    pragma aux.syn
1020: 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b 0a  chronous = OFF;.
1030: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73      pragma aux.s
1040: 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20  ynchronous;.    
1050: 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e 6f  pragma synchrono
1060: 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 30 20 32 7d  us;.  } .} {0 2}
1070: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
1080: 32 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  2.4 {.  execsql 
1090: 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78  {.    pragma aux
10a0: 2e 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f  .synchronous = O
10b0: 4e 3b 0a 20 20 20 20 70 72 61 67 6d 61 20 73 79  N;.    pragma sy
10c0: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 70  nchronous;.    p
10d0: 72 61 67 6d 61 20 61 75 78 2e 73 79 6e 63 68 72  ragma aux.synchr
10e0: 6f 6e 6f 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32  onous;.  } .} {2
10f0: 20 31 7d 0a 0a 23 20 43 6f 6e 73 74 72 75 63 74   1}..# Construct
1100: 20 61 20 63 6f 72 72 75 70 74 65 64 20 69 6e 64   a corrupted ind
1110: 65 78 20 61 6e 64 20 6d 61 6b 65 20 73 75 72 65  ex and make sure
1120: 20 74 68 65 20 69 6e 74 65 67 72 69 74 79 5f 63   the integrity_c
1130: 68 65 63 6b 0a 23 20 70 72 61 67 6d 61 20 66 69  heck.# pragma fi
1140: 6e 64 73 20 69 74 2e 0a 23 0a 23 20 54 68 65 73  nds it..#.# Thes
1150: 65 20 74 65 73 74 73 20 77 6f 6e 27 74 20 77 6f  e tests won't wo
1160: 72 6b 20 69 66 20 74 68 65 20 64 61 74 61 62 61  rk if the databa
1170: 73 65 20 69 73 20 65 6e 63 72 79 70 74 65 64 0a  se is encrypted.
1180: 23 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  #.do_test pragma
1190: 2d 33 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -3.1 {.  execsql
11a0: 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20   {.    BEGIN;.  
11b0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
11c0: 32 28 61 2c 62 2c 63 29 3b 0a 20 20 20 20 43 52  2(a,b,c);.    CR
11d0: 45 41 54 45 20 49 4e 44 45 58 20 69 32 20 4f 4e  EATE INDEX i2 ON
11e0: 20 74 32 28 61 29 3b 0a 20 20 20 20 49 4e 53 45   t2(a);.    INSE
11f0: 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45  RT INTO t2 VALUE
1200: 53 28 31 31 2c 32 2c 33 29 3b 0a 20 20 20 20 49  S(11,2,3);.    I
1210: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41  NSERT INTO t2 VA
1220: 4c 55 45 53 28 32 32 2c 33 2c 34 29 3b 0a 20 20  LUES(22,3,4);.  
1230: 20 20 43 4f 4d 4d 49 54 3b 0a 20 20 20 20 53 45    COMMIT;.    SE
1240: 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 66 72  LECT rowid, * fr
1250: 6f 6d 20 74 32 3b 0a 20 20 7d 0a 7d 20 7b 31 20  om t2;.  }.} {1 
1260: 31 31 20 32 20 33 20 32 20 32 32 20 33 20 34 7d  11 2 3 2 22 3 4}
1270: 0a 69 66 20 7b 21 5b 73 71 6c 69 74 65 33 20 2d  .if {![sqlite3 -
1280: 68 61 73 2d 63 6f 64 65 63 5d 7d 20 7b 0a 20 20  has-codec]} {.  
1290: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33  do_test pragma-3
12a0: 2e 32 20 7b 0a 20 20 20 20 73 65 74 20 72 6f 6f  .2 {.    set roo
12b0: 74 70 61 67 65 20 5b 65 78 65 63 73 71 6c 20 7b  tpage [execsql {
12c0: 53 45 4c 45 43 54 20 72 6f 6f 74 70 61 67 65 20  SELECT rootpage 
12d0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74  FROM sqlite_mast
12e0: 65 72 20 57 48 45 52 45 20 6e 61 6d 65 3d 27 69  er WHERE name='i
12f0: 32 27 7d 5d 0a 20 20 20 20 73 65 74 20 64 62 20  2'}].    set db 
1300: 5b 62 74 72 65 65 5f 6f 70 65 6e 20 74 65 73 74  [btree_open test
1310: 2e 64 62 20 31 30 30 20 30 5d 0a 20 20 20 20 62  .db 100 0].    b
1320: 74 72 65 65 5f 62 65 67 69 6e 5f 74 72 61 6e 73  tree_begin_trans
1330: 61 63 74 69 6f 6e 20 24 64 62 0a 20 20 20 20 73  action $db.    s
1340: 65 74 20 63 20 5b 62 74 72 65 65 5f 63 75 72 73  et c [btree_curs
1350: 6f 72 20 24 64 62 20 24 72 6f 6f 74 70 61 67 65  or $db $rootpage
1360: 20 31 5d 0a 20 20 20 20 62 74 72 65 65 5f 66 69   1].    btree_fi
1370: 72 73 74 20 24 63 0a 20 20 20 20 62 74 72 65 65  rst $c.    btree
1380: 5f 64 65 6c 65 74 65 20 24 63 0a 20 20 20 20 62  _delete $c.    b
1390: 74 72 65 65 5f 63 6f 6d 6d 69 74 20 24 64 62 0a  tree_commit $db.
13a0: 20 20 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 20      btree_close 
13b0: 24 64 62 0a 20 20 20 20 65 78 65 63 73 71 6c 20  $db.    execsql 
13c0: 7b 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74  {PRAGMA integrit
13d0: 79 5f 63 68 65 63 6b 7d 0a 20 20 7d 20 7b 7b 72  y_check}.  } {{r
13e0: 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66  owid 1 missing f
13f0: 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 77  rom index i2} {w
1400: 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69 65  rong # of entrie
1410: 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 7d 0a  s in index i2}}.
1420: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
1430: 2d 33 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  -3.3 {.  execsql
1440: 20 7b 0a 20 20 20 20 44 52 4f 50 20 49 4e 44 45   {.    DROP INDE
1450: 58 20 69 32 3b 0a 20 20 7d 20 0a 7d 20 7b 7d 0a  X i2;.  } .} {}.
1460: 0a 23 20 54 65 73 74 20 6d 6f 64 69 66 79 69 6e  .# Test modifyin
1470: 67 20 74 68 65 20 63 61 63 68 65 5f 73 69 7a 65  g the cache_size
1480: 20 6f 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   of an attached 
1490: 64 61 74 61 62 61 73 65 2e 0a 64 6f 5f 74 65 73  database..do_tes
14a0: 74 20 70 72 61 67 6d 61 2d 34 2e 31 20 7b 0a 20  t pragma-4.1 {. 
14b0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70   execsql {.    p
14c0: 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65 5f  ragma aux.cache_
14d0: 73 69 7a 65 3b 0a 20 20 20 20 70 72 61 67 6d 61  size;.    pragma
14e0: 20 61 75 78 2e 64 65 66 61 75 6c 74 5f 63 61 63   aux.default_cac
14f0: 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d 20  he_size;.  } .} 
1500: 7b 32 30 30 30 20 32 30 30 30 7d 0a 64 6f 5f 74  {2000 2000}.do_t
1510: 65 73 74 20 70 72 61 67 6d 61 2d 34 2e 32 20 7b  est pragma-4.2 {
1520: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
1530: 20 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68   pragma aux.cach
1540: 65 5f 73 69 7a 65 20 3d 20 35 30 3b 0a 20 20 20  e_size = 50;.   
1550: 20 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68   pragma aux.cach
1560: 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72 61 67  e_size;.    prag
1570: 6d 61 20 61 75 78 2e 64 65 66 61 75 6c 74 5f 63  ma aux.default_c
1580: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a  ache_size;.  } .
1590: 7d 20 7b 35 30 20 32 30 30 30 7d 0a 64 6f 5f 74  } {50 2000}.do_t
15a0: 65 73 74 20 70 72 61 67 6d 61 2d 34 2e 33 20 7b  est pragma-4.3 {
15b0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
15c0: 20 70 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61   pragma aux.defa
15d0: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 3d  ult_cache_size =
15e0: 20 34 35 36 3b 0a 20 20 20 20 70 72 61 67 6d 61   456;.    pragma
15f0: 20 61 75 78 2e 63 61 63 68 65 5f 73 69 7a 65 3b   aux.cache_size;
1600: 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e  .    pragma aux.
1610: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
1620: 7a 65 3b 0a 20 20 7d 20 0a 7d 20 7b 34 35 36 20  ze;.  } .} {456 
1630: 34 35 36 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  456}.do_test pra
1640: 67 6d 61 2d 34 2e 34 20 7b 0a 20 20 65 78 65 63  gma-4.4 {.  exec
1650: 73 71 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61  sql {.    pragma
1660: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
1670: 20 70 72 61 67 6d 61 20 64 65 66 61 75 6c 74 5f   pragma default_
1680: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20  cache_size;.  } 
1690: 0a 7d 20 7b 31 32 33 20 31 32 33 7d 0a 64 6f 5f  .} {123 123}.do_
16a0: 74 65 73 74 20 70 72 61 67 6d 61 2d 34 2e 35 20  test pragma-4.5 
16b0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
16c0: 20 20 44 45 54 41 43 48 20 61 75 78 3b 0a 20 20    DETACH aux;.  
16d0: 20 20 41 54 54 41 43 48 20 27 74 65 73 74 33 2e    ATTACH 'test3.
16e0: 64 62 27 20 41 53 20 61 75 78 3b 0a 20 20 20 20  db' AS aux;.    
16f0: 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65  pragma aux.cache
1700: 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72 61 67 6d  _size;.    pragm
1710: 61 20 61 75 78 2e 64 65 66 61 75 6c 74 5f 63 61  a aux.default_ca
1720: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d  che_size;.  } .}
1730: 20 7b 32 30 30 30 20 32 30 30 30 7d 0a 64 6f 5f   {2000 2000}.do_
1740: 74 65 73 74 20 70 72 61 67 6d 61 2d 34 2e 36 20  test pragma-4.6 
1750: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1760: 20 20 44 45 54 41 43 48 20 61 75 78 3b 0a 20 20    DETACH aux;.  
1770: 20 20 41 54 54 41 43 48 20 27 74 65 73 74 32 2e    ATTACH 'test2.
1780: 64 62 27 20 41 53 20 61 75 78 3b 0a 20 20 20 20  db' AS aux;.    
1790: 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65  pragma aux.cache
17a0: 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72 61 67 6d  _size;.    pragm
17b0: 61 20 61 75 78 2e 64 65 66 61 75 6c 74 5f 63 61  a aux.default_ca
17c0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d  che_size;.  } .}
17d0: 20 7b 34 35 36 20 34 35 36 7d 0a 0a 23 20 54 65   {456 456}..# Te
17e0: 73 74 20 74 68 61 74 20 6d 6f 64 69 66 79 69 6e  st that modifyin
17f0: 67 20 74 68 65 20 73 79 6e 63 2d 6c 65 76 65 6c  g the sync-level
1800: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
1810: 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  f a transaction 
1820: 69 73 0a 23 20 64 69 73 61 6c 6c 6f 77 65 64 2e  is.# disallowed.
1830: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
1840: 35 2e 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  5.0 {.  execsql 
1850: 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 73 79 6e  {.    pragma syn
1860: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 20 0a 7d  chronous;.  } .}
1870: 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61   {2}.do_test pra
1880: 67 6d 61 2d 35 2e 31 20 7b 0a 20 20 63 61 74 63  gma-5.1 {.  catc
1890: 68 73 71 6c 20 7b 0a 20 20 20 20 42 45 47 49 4e  hsql {.    BEGIN
18a0: 3b 0a 20 20 20 20 70 72 61 67 6d 61 20 73 79 6e  ;.    pragma syn
18b0: 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46 3b 0a  chronous = OFF;.
18c0: 20 20 7d 20 0a 7d 20 7b 31 20 7b 53 61 66 65 74    } .} {1 {Safet
18d0: 79 20 6c 65 76 65 6c 20 6d 61 79 20 6e 6f 74 20  y level may not 
18e0: 62 65 20 63 68 61 6e 67 65 64 20 69 6e 73 69 64  be changed insid
18f0: 65 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d  e a transaction}
1900: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
1910: 2d 35 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  -5.2 {.  execsql
1920: 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 73 79   {.    pragma sy
1930: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 20 0a  nchronous;.  } .
1940: 7d 20 7b 32 7d 0a 63 61 74 63 68 73 71 6c 20 7b  } {2}.catchsql {
1950: 43 4f 4d 4d 49 54 3b 7d 0a 0a 23 20 54 65 73 74  COMMIT;}..# Test
1960: 20 73 63 68 65 6d 61 2d 71 75 65 72 79 20 70 72   schema-query pr
1970: 61 67 6d 61 73 0a 23 0a 64 6f 5f 74 65 73 74 20  agmas.#.do_test 
1980: 70 72 61 67 6d 61 2d 36 2e 31 20 7b 0a 20 20 66  pragma-6.1 {.  f
1990: 6f 72 65 61 63 68 20 7b 69 64 78 20 6e 61 6d 65  oreach {idx name
19a0: 20 66 69 6c 65 7d 20 5b 65 78 65 63 73 71 6c 20   file} [execsql 
19b0: 7b 70 72 61 67 6d 61 20 64 61 74 61 62 61 73 65  {pragma database
19c0: 5f 6c 69 73 74 7d 5d 20 7b 0a 20 20 20 20 6c 61  _list}] {.    la
19d0: 70 70 65 6e 64 20 72 65 73 20 24 69 64 78 20 24  ppend res $idx $
19e0: 6e 61 6d 65 0a 20 20 7d 0a 20 20 73 65 74 20 72  name.  }.  set r
19f0: 65 73 0a 7d 20 7b 30 20 6d 61 69 6e 20 31 20 74  es.} {0 main 1 t
1a00: 65 6d 70 20 32 20 61 75 78 7d 0a 64 6f 5f 74 65  emp 2 aux}.do_te
1a10: 73 74 20 70 72 61 67 6d 61 2d 36 2e 32 20 7b 0a  st pragma-6.2 {.
1a20: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1a30: 70 72 61 67 6d 61 20 74 61 62 6c 65 5f 69 6e 66  pragma table_inf
1a40: 6f 28 74 32 29 0a 20 20 7d 0a 7d 20 7b 30 20 61  o(t2).  }.} {0 a
1a50: 20 6e 75 6d 65 72 69 63 20 30 20 7b 7d 20 30 20   numeric 0 {} 0 
1a60: 31 20 62 20 6e 75 6d 65 72 69 63 20 30 20 7b 7d  1 b numeric 0 {}
1a70: 20 30 20 32 20 63 20 6e 75 6d 65 72 69 63 20 30   0 2 c numeric 0
1a80: 20 7b 7d 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70   {} 0}.do_test p
1a90: 72 61 67 6d 61 2d 36 2e 33 20 7b 0a 20 20 65 78  ragma-6.3 {.  ex
1aa0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
1ab0: 54 45 20 54 41 42 4c 45 20 74 33 28 61 20 69 6e  TE TABLE t3(a in
1ac0: 74 20 72 65 66 65 72 65 6e 63 65 73 20 74 32 28  t references t2(
1ad0: 62 29 2c 20 62 20 55 4e 49 51 55 45 29 3b 0a 20  b), b UNIQUE);. 
1ae0: 20 20 20 70 72 61 67 6d 61 20 66 6f 72 65 69 67     pragma foreig
1af0: 6e 5f 6b 65 79 5f 6c 69 73 74 28 74 33 29 3b 0a  n_key_list(t3);.
1b00: 20 20 7d 0a 7d 20 7b 30 20 30 20 74 32 20 61 20    }.} {0 0 t2 a 
1b10: 62 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  b}.do_test pragm
1b20: 61 2d 36 2e 34 20 7b 0a 20 20 65 78 65 63 73 71  a-6.4 {.  execsq
1b30: 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 69  l {.    pragma i
1b40: 6e 64 65 78 5f 6c 69 73 74 28 74 33 29 3b 0a 20  ndex_list(t3);. 
1b50: 20 7d 0a 7d 20 7b 30 20 73 71 6c 69 74 65 5f 61   }.} {0 sqlite_a
1b60: 75 74 6f 69 6e 64 65 78 5f 74 33 5f 31 20 31 7d  utoindex_t3_1 1}
1b70: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
1b80: 36 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  6.5 {.  execsql 
1b90: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 49 4e 44  {.    CREATE IND
1ba0: 45 58 20 74 33 69 31 20 4f 4e 20 74 33 28 61 2c  EX t3i1 ON t3(a,
1bb0: 62 29 3b 0a 20 20 20 20 70 72 61 67 6d 61 20 69  b);.    pragma i
1bc0: 6e 64 65 78 5f 69 6e 66 6f 28 74 33 69 31 29 3b  ndex_info(t3i1);
1bd0: 0a 20 20 7d 0a 7d 20 7b 30 20 30 20 61 20 31 20  .  }.} {0 0 a 1 
1be0: 31 20 62 7d 0a 0a 23 20 4d 69 73 63 65 6c 6c 61  1 b}..# Miscella
1bf0: 6e 65 6f 75 73 20 74 65 73 74 73 0a 23 0a 64 6f  neous tests.#.do
1c00: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 37 2e 31  _test pragma-7.1
1c10: 20 7b 0a 20 20 23 20 4d 61 6b 65 20 73 75 72 65   {.  # Make sure
1c20: 20 61 20 70 72 61 67 6d 61 20 6b 6e 6f 77 73 20   a pragma knows 
1c30: 74 6f 20 72 65 61 64 20 74 68 65 20 73 63 68 65  to read the sche
1c40: 6d 61 20 69 66 20 69 74 20 6e 65 65 64 73 20 74  ma if it needs t
1c50: 6f 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73  o.  db close.  s
1c60: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
1c70: 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  b.  execsql {.  
1c80: 20 20 70 72 61 67 6d 61 20 69 6e 64 65 78 5f 6c    pragma index_l
1c90: 69 73 74 28 74 33 29 3b 0a 20 20 7d 0a 7d 20 7b  ist(t3);.  }.} {
1ca0: 30 20 74 33 69 31 20 30 20 31 20 73 71 6c 69 74  0 t3i1 0 1 sqlit
1cb0: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 33 5f 31  e_autoindex_t3_1
1cc0: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67   1}.do_test prag
1cd0: 6d 61 2d 37 2e 32 20 7b 0a 20 20 64 62 20 63 6c  ma-7.2 {.  db cl
1ce0: 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64 62  ose.  sqlite3 db
1cf0: 20 74 65 73 74 2e 64 62 0a 20 20 63 61 74 63 68   test.db.  catch
1d00: 73 71 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61  sql {.    pragma
1d10: 20 65 6e 63 6f 64 69 6e 67 3d 62 6f 67 75 73 3b   encoding=bogus;
1d20: 0a 20 20 7d 0a 7d 20 7b 31 20 7b 75 6e 73 75 70  .  }.} {1 {unsup
1d30: 70 6f 72 74 65 64 20 65 6e 63 6f 64 69 6e 67 3a  ported encoding:
1d40: 20 62 6f 67 75 73 7d 7d 0a 64 6f 5f 74 65 73 74   bogus}}.do_test
1d50: 20 70 72 61 67 6d 61 2d 37 2e 33 20 7b 0a 20 20   pragma-7.3 {.  
1d60: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74  db close.  sqlit
1d70: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 20 20  e3 db test.db.  
1d80: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70 72  execsql {.    pr
1d90: 61 67 6d 61 20 6c 6f 63 6b 5f 73 74 61 74 75 73  agma lock_status
1da0: 3b 0a 20 20 7d 0a 7d 20 7b 6d 61 69 6e 20 75 6e  ;.  }.} {main un
1db0: 6c 6f 63 6b 65 64 20 74 65 6d 70 20 63 6c 6f 73  locked temp clos
1dc0: 65 64 7d 0a 0a 0a 0a 66 69 6e 69 73 68 5f 74 65  ed}....finish_te
1dd0: 73 74 0a                                         st.