/ Hex Artifact Content
Login

Artifact 165372b62391d233715cde82d99f34d306f9257f:


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 36 39 20 32 30 30 38 2f 31 30 2f 32 33 20 30  .69 2008/10/23 0
0200: 35 3a 34 35 3a 30 37 20 64 61 6e 69 65 6c 6b 31  5:45:07 danielk1
0210: 39 37 37 20 45 78 70 20 24 0a 0a 73 65 74 20 74  977 Exp $..set t
0220: 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72  estdir [file dir
0230: 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75  name $argv0].sou
0240: 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65 73  rce $testdir/tes
0250: 74 65 72 2e 74 63 6c 0a 0a 23 20 54 65 73 74 20  ter.tcl..# Test 
0260: 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 3a 0a 23 0a  organization:.#.
0270: 23 20 70 72 61 67 6d 61 2d 31 2e 2a 3a 20 54 65  # pragma-1.*: Te
0280: 73 74 20 63 61 63 68 65 5f 73 69 7a 65 2c 20 64  st cache_size, d
0290: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
02a0: 65 20 61 6e 64 20 73 79 6e 63 68 72 6f 6e 6f 75  e and synchronou
02b0: 73 20 6f 6e 20 6d 61 69 6e 20 64 62 2e 0a 23 20  s on main db..# 
02c0: 70 72 61 67 6d 61 2d 32 2e 2a 3a 20 54 65 73 74  pragma-2.*: Test
02d0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f 6e 20   synchronous on 
02e0: 61 74 74 61 63 68 65 64 20 64 62 2e 0a 23 20 70  attached db..# p
02f0: 72 61 67 6d 61 2d 33 2e 2a 3a 20 54 65 73 74 20  ragma-3.*: Test 
0300: 64 65 74 65 63 74 69 6f 6e 20 6f 66 20 74 61 62  detection of tab
0310: 6c 65 2f 69 6e 64 65 78 20 69 6e 63 6f 6e 73 69  le/index inconsi
0320: 73 74 65 6e 63 79 20 62 79 20 69 6e 74 65 67 72  stency by integr
0330: 69 74 79 5f 63 68 65 63 6b 2e 0a 23 20 70 72 61  ity_check..# pra
0340: 67 6d 61 2d 34 2e 2a 3a 20 54 65 73 74 20 63 61  gma-4.*: Test ca
0350: 63 68 65 5f 73 69 7a 65 20 61 6e 64 20 64 65 66  che_size and def
0360: 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20  ault_cache_size 
0370: 6f 6e 20 61 74 74 61 63 68 65 64 20 64 62 2e 0a  on attached db..
0380: 23 20 70 72 61 67 6d 61 2d 35 2e 2a 3a 20 54 65  # pragma-5.*: Te
0390: 73 74 20 74 68 61 74 20 70 72 61 67 6d 61 20 73  st that pragma s
03a0: 79 6e 63 68 72 6f 6e 6f 75 73 20 6d 61 79 20 6e  ynchronous may n
03b0: 6f 74 20 62 65 20 75 73 65 64 20 69 6e 73 69 64  ot be used insid
03c0: 65 20 6f 66 20 61 0a 23 20 20 20 20 20 20 20 20  e of a.#        
03d0: 20 20 20 20 20 74 72 61 6e 73 61 63 74 69 6f 6e       transaction
03e0: 2e 0a 23 20 70 72 61 67 6d 61 2d 36 2e 2a 3a 20  ..# pragma-6.*: 
03f0: 54 65 73 74 20 73 63 68 65 6d 61 2d 71 75 65 72  Test schema-quer
0400: 79 20 70 72 61 67 6d 61 73 2e 0a 23 20 70 72 61  y pragmas..# pra
0410: 67 6d 61 2d 37 2e 2a 3a 20 4d 69 73 63 65 6c 6c  gma-7.*: Miscell
0420: 61 6e 65 6f 75 73 20 74 65 73 74 73 2e 0a 23 20  aneous tests..# 
0430: 70 72 61 67 6d 61 2d 38 2e 2a 3a 20 54 65 73 74  pragma-8.*: Test
0440: 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 61 6e   user_version an
0450: 64 20 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e  d schema_version
0460: 20 70 72 61 67 6d 61 73 2e 0a 23 20 70 72 61 67   pragmas..# prag
0470: 6d 61 2d 39 2e 2a 3a 20 54 65 73 74 20 74 65 6d  ma-9.*: Test tem
0480: 70 5f 73 74 6f 72 65 20 61 6e 64 20 74 65 6d 70  p_store and temp
0490: 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
04a0: 2e 0a 23 20 70 72 61 67 6d 61 2d 31 30 2e 2a 3a  ..# pragma-10.*:
04b0: 20 54 65 73 74 20 74 68 65 20 63 6f 75 6e 74 5f   Test the count_
04c0: 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61 20 69  changes pragma i
04d0: 6e 20 74 68 65 20 70 72 65 73 65 6e 63 65 20 6f  n the presence o
04e0: 66 20 74 72 69 67 67 65 72 73 2e 0a 23 20 70 72  f triggers..# pr
04f0: 61 67 6d 61 2d 31 31 2e 2a 3a 20 54 65 73 74 20  agma-11.*: Test 
0500: 74 68 65 20 63 6f 6c 6c 61 74 69 6f 6e 5f 6c 69  the collation_li
0510: 73 74 20 70 72 61 67 6d 61 2e 0a 23 20 70 72 61  st pragma..# pra
0520: 67 6d 61 2d 31 34 2e 2a 3a 20 54 65 73 74 20 74  gma-14.*: Test t
0530: 68 65 20 70 61 67 65 5f 63 6f 75 6e 74 20 70 72  he page_count pr
0540: 61 67 6d 61 2e 0a 23 20 70 72 61 67 6d 61 2d 31  agma..# pragma-1
0550: 35 2e 2a 3a 20 54 65 73 74 20 74 68 61 74 20 74  5.*: Test that t
0560: 68 65 20 76 61 6c 75 65 20 73 65 74 20 75 73 69  he value set usi
0570: 6e 67 20 74 68 65 20 63 61 63 68 65 5f 73 69 7a  ng the cache_siz
0580: 65 20 70 72 61 67 6d 61 20 69 73 20 6e 6f 74 0a  e pragma is not.
0590: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72  #              r
05a0: 65 73 65 74 20 77 68 65 6e 20 74 68 65 20 73 63  eset when the sc
05b0: 68 65 6d 61 20 69 73 20 72 65 6c 6f 61 64 65 64  hema is reloaded
05c0: 2e 0a 23 0a 0a 69 66 63 61 70 61 62 6c 65 20 21  ..#..ifcapable !
05d0: 70 72 61 67 6d 61 20 7b 0a 20 20 66 69 6e 69 73  pragma {.  finis
05e0: 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72 6e 0a  h_test.  return.
05f0: 7d 0a 0a 23 20 44 65 6c 65 74 65 20 74 68 65 20  }..# Delete the 
0600: 70 72 65 65 78 69 73 74 69 6e 67 20 64 61 74 61  preexisting data
0610: 62 61 73 65 20 74 6f 20 61 76 6f 69 64 20 74 68  base to avoid th
0620: 65 20 73 70 65 63 69 61 6c 20 73 65 74 75 70 0a  e special setup.
0630: 23 20 74 68 61 74 20 74 68 65 20 22 61 6c 6c 2e  # that the "all.
0640: 74 65 73 74 22 20 73 63 72 69 70 74 20 64 6f 65  test" script doe
0650: 73 2e 0a 23 0a 64 62 20 63 6c 6f 73 65 0a 66 69  s..#.db close.fi
0660: 6c 65 20 64 65 6c 65 74 65 20 74 65 73 74 2e 64  le delete test.d
0670: 62 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61  b test.db-journa
0680: 6c 0a 66 69 6c 65 20 64 65 6c 65 74 65 20 74 65  l.file delete te
0690: 73 74 33 2e 64 62 20 74 65 73 74 33 2e 64 62 2d  st3.db test3.db-
06a0: 6a 6f 75 72 6e 61 6c 0a 73 71 6c 69 74 65 33 20  journal.sqlite3 
06b0: 64 62 20 74 65 73 74 2e 64 62 3b 20 73 65 74 20  db test.db; set 
06c0: 44 42 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 6e  DB [sqlite3_conn
06d0: 65 63 74 69 6f 6e 5f 70 6f 69 6e 74 65 72 20 64  ection_pointer d
06e0: 62 5d 0a 0a 0a 69 66 63 61 70 61 62 6c 65 20 70  b]...ifcapable p
06f0: 61 67 65 72 5f 70 72 61 67 6d 61 73 20 7b 0a 73  ager_pragmas {.s
0700: 65 74 20 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a  et DFLT_CACHE_SZ
0710: 20 5b 64 62 20 6f 6e 65 20 7b 50 52 41 47 4d 41   [db one {PRAGMA
0720: 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73   default_cache_s
0730: 69 7a 65 7d 5d 0a 73 65 74 20 54 45 4d 50 5f 43  ize}].set TEMP_C
0740: 41 43 48 45 5f 53 5a 20 5b 64 62 20 6f 6e 65 20  ACHE_SZ [db one 
0750: 7b 50 52 41 47 4d 41 20 74 65 6d 70 2e 64 65 66  {PRAGMA temp.def
0760: 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 7d  ault_cache_size}
0770: 5d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  ].do_test pragma
0780: 2d 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.1 {.  execsql
0790: 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 63 61   {.    PRAGMA ca
07a0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52  che_size;.    PR
07b0: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63  AGMA default_cac
07c0: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41  he_size;.    PRA
07d0: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b  GMA synchronous;
07e0: 0a 20 20 7d 0a 7d 20 5b 6c 69 73 74 20 24 44 46  .  }.} [list $DF
07f0: 4c 54 5f 43 41 43 48 45 5f 53 5a 20 24 44 46 4c  LT_CACHE_SZ $DFL
0800: 54 5f 43 41 43 48 45 5f 53 5a 20 32 5d 0a 64 6f  T_CACHE_SZ 2].do
0810: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 32  _test pragma-1.2
0820: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0830: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0840: 6f 6e 6f 75 73 3d 4f 46 46 3b 0a 20 20 20 20 50  onous=OFF;.    P
0850: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
0860: 3d 31 32 33 34 3b 0a 20 20 20 20 50 52 41 47 4d  =1234;.    PRAGM
0870: 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  A cache_size;.  
0880: 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74    PRAGMA default
0890: 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20  _cache_size;.   
08a0: 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e   PRAGMA synchron
08b0: 6f 75 73 3b 0a 20 20 7d 0a 7d 20 5b 6c 69 73 74  ous;.  }.} [list
08c0: 20 31 32 33 34 20 24 44 46 4c 54 5f 43 41 43 48   1234 $DFLT_CACH
08d0: 45 5f 53 5a 20 30 5d 0a 64 6f 5f 74 65 73 74 20  E_SZ 0].do_test 
08e0: 70 72 61 67 6d 61 2d 31 2e 33 20 7b 0a 20 20 64  pragma-1.3 {.  d
08f0: 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65  b close.  sqlite
0900: 33 20 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65  3 db test.db.  e
0910: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
0920: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a  GMA cache_size;.
0930: 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75      PRAGMA defau
0940: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
0950: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0960: 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 5b 6c 69  onous;.  }.} [li
0970: 73 74 20 24 44 46 4c 54 5f 43 41 43 48 45 5f 53  st $DFLT_CACHE_S
0980: 5a 20 24 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a  Z $DFLT_CACHE_SZ
0990: 20 32 5d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67   2].do_test prag
09a0: 6d 61 2d 31 2e 34 20 7b 0a 20 20 65 78 65 63 73  ma-1.4 {.  execs
09b0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
09c0: 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4f 46 46 3b  synchronous=OFF;
09d0: 0a 20 20 20 20 50 52 41 47 4d 41 20 63 61 63 68  .    PRAGMA cach
09e0: 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41 47  e_size;.    PRAG
09f0: 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65  MA default_cache
0a00: 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d  _size;.    PRAGM
0a10: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20  A synchronous;. 
0a20: 20 7d 0a 7d 20 5b 6c 69 73 74 20 24 44 46 4c 54   }.} [list $DFLT
0a30: 5f 43 41 43 48 45 5f 53 5a 20 24 44 46 4c 54 5f  _CACHE_SZ $DFLT_
0a40: 43 41 43 48 45 5f 53 5a 20 30 5d 0a 64 6f 5f 74  CACHE_SZ 0].do_t
0a50: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 35 20 7b  est pragma-1.5 {
0a60: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0a70: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
0a80: 7a 65 3d 34 33 32 31 3b 0a 20 20 20 20 50 52 41  ze=4321;.    PRA
0a90: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a  GMA cache_size;.
0aa0: 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75      PRAGMA defau
0ab0: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
0ac0: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0ad0: 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 5b 6c 69  onous;.  }.} [li
0ae0: 73 74 20 34 33 32 31 20 24 44 46 4c 54 5f 43 41  st 4321 $DFLT_CA
0af0: 43 48 45 5f 53 5a 20 30 5d 0a 64 6f 5f 74 65 73  CHE_SZ 0].do_tes
0b00: 74 20 70 72 61 67 6d 61 2d 31 2e 36 20 7b 0a 20  t pragma-1.6 {. 
0b10: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50   execsql {.    P
0b20: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
0b30: 73 3d 4f 4e 3b 0a 20 20 20 20 50 52 41 47 4d 41  s=ON;.    PRAGMA
0b40: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
0b50: 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f   PRAGMA default_
0b60: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
0b70: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
0b80: 75 73 3b 0a 20 20 7d 0a 7d 20 5b 6c 69 73 74 20  us;.  }.} [list 
0b90: 34 33 32 31 20 24 44 46 4c 54 5f 43 41 43 48 45  4321 $DFLT_CACHE
0ba0: 5f 53 5a 20 31 5d 0a 64 6f 5f 74 65 73 74 20 70  _SZ 1].do_test p
0bb0: 72 61 67 6d 61 2d 31 2e 37 20 7b 0a 20 20 64 62  ragma-1.7 {.  db
0bc0: 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33   close.  sqlite3
0bd0: 20 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78   db test.db.  ex
0be0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0bf0: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
0c00: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
0c10: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
0c20: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0c30: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 5b 6c 69 73  nous;.  }.} [lis
0c40: 74 20 24 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a  t $DFLT_CACHE_SZ
0c50: 20 24 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a 20   $DFLT_CACHE_SZ 
0c60: 32 5d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  2].do_test pragm
0c70: 61 2d 31 2e 38 20 7b 0a 20 20 65 78 65 63 73 71  a-1.8 {.  execsq
0c80: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 64  l {.    PRAGMA d
0c90: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
0ca0: 65 3d 31 32 33 3b 0a 20 20 20 20 50 52 41 47 4d  e=123;.    PRAGM
0cb0: 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  A cache_size;.  
0cc0: 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74    PRAGMA default
0cd0: 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20  _cache_size;.   
0ce0: 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e   PRAGMA synchron
0cf0: 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33 20  ous;.  }.} {123 
0d00: 31 32 33 20 32 7d 0a 64 6f 5f 74 65 73 74 20 70  123 2}.do_test p
0d10: 72 61 67 6d 61 2d 31 2e 39 2e 31 20 7b 0a 20 20  ragma-1.9.1 {.  
0d20: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74  db close.  sqlit
0d30: 65 33 20 64 62 20 74 65 73 74 2e 64 62 3b 20 73  e3 db test.db; s
0d40: 65 74 20 3a 3a 44 42 20 5b 73 71 6c 69 74 65 33  et ::DB [sqlite3
0d50: 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e  _connection_poin
0d60: 74 65 72 20 64 62 5d 0a 20 20 65 78 65 63 73 71  ter db].  execsq
0d70: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 63  l {.    PRAGMA c
0d80: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50  ache_size;.    P
0d90: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
0da0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52  che_size;.    PR
0db0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
0dc0: 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33 20 31 32 33  ;.  }.} {123 123
0dd0: 20 32 7d 0a 69 66 63 61 70 61 62 6c 65 20 76 61   2}.ifcapable va
0de0: 63 75 75 6d 20 7b 0a 20 20 64 6f 5f 74 65 73 74  cuum {.  do_test
0df0: 20 70 72 61 67 6d 61 2d 31 2e 39 2e 32 20 7b 0a   pragma-1.9.2 {.
0e00: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
0e10: 20 20 20 20 56 41 43 55 55 4d 3b 0a 20 20 20 20      VACUUM;.    
0e20: 20 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73    PRAGMA cache_s
0e30: 69 7a 65 3b 0a 20 20 20 20 20 20 50 52 41 47 4d  ize;.      PRAGM
0e40: 41 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f  A default_cache_
0e50: 73 69 7a 65 3b 0a 20 20 20 20 20 20 50 52 41 47  size;.      PRAG
0e60: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a  MA synchronous;.
0e70: 20 20 20 20 7d 0a 20 20 7d 20 7b 31 32 33 20 31      }.  } {123 1
0e80: 32 33 20 32 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20  23 2}.}.do_test 
0e90: 70 72 61 67 6d 61 2d 31 2e 31 30 20 7b 0a 20 20  pragma-1.10 {.  
0ea0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
0eb0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
0ec0: 3d 4e 4f 52 4d 41 4c 3b 0a 20 20 20 20 50 52 41  =NORMAL;.    PRA
0ed0: 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a  GMA cache_size;.
0ee0: 20 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75      PRAGMA defau
0ef0: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
0f00: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0f10: 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32  onous;.  }.} {12
0f20: 33 20 31 32 33 20 31 7d 0a 64 6f 5f 74 65 73 74  3 123 1}.do_test
0f30: 20 70 72 61 67 6d 61 2d 31 2e 31 31 20 7b 0a 20   pragma-1.11 {. 
0f40: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50   execsql {.    P
0f50: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
0f60: 73 3d 46 55 4c 4c 3b 0a 20 20 20 20 50 52 41 47  s=FULL;.    PRAG
0f70: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
0f80: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
0f90: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
0fa0: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0fb0: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33  nous;.  }.} {123
0fc0: 20 31 32 33 20 32 7d 0a 64 6f 5f 74 65 73 74 20   123 2}.do_test 
0fd0: 70 72 61 67 6d 61 2d 31 2e 31 32 20 7b 0a 20 20  pragma-1.12 {.  
0fe0: 64 62 20 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74  db close.  sqlit
0ff0: 65 33 20 64 62 20 74 65 73 74 2e 64 62 3b 20 73  e3 db test.db; s
1000: 65 74 20 3a 3a 44 42 20 5b 73 71 6c 69 74 65 33  et ::DB [sqlite3
1010: 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e  _connection_poin
1020: 74 65 72 20 64 62 5d 0a 20 20 65 78 65 63 73 71  ter db].  execsq
1030: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 63  l {.    PRAGMA c
1040: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50  ache_size;.    P
1050: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
1060: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52  che_size;.    PR
1070: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
1080: 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33 20 31 32 33  ;.  }.} {123 123
1090: 20 32 7d 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65   2}..# Make sure
10a0: 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 6e 64   the pragma hand
10b0: 6c 65 72 20 75 6e 64 65 72 73 74 61 6e 64 73 20  ler understands 
10c0: 6e 75 6d 65 72 69 63 20 76 61 6c 75 65 73 20 69  numeric values i
10d0: 6e 20 61 64 64 69 74 69 6f 6e 0a 23 20 74 6f 20  n addition.# to 
10e0: 6b 65 79 77 6f 72 64 73 20 6c 69 6b 65 20 22 6f  keywords like "o
10f0: 66 66 22 20 61 6e 64 20 22 66 75 6c 6c 22 2e 0a  ff" and "full"..
1100: 23 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  #.do_test pragma
1110: 2d 31 2e 31 33 20 7b 0a 20 20 65 78 65 63 73 71  -1.13 {.  execsq
1120: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  l {.    PRAGMA s
1130: 79 6e 63 68 72 6f 6e 6f 75 73 3d 30 3b 0a 20 20  ynchronous=0;.  
1140: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
1150: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 30 7d 0a  nous;.  }.} {0}.
1160: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31  do_test pragma-1
1170: 2e 31 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .14 {.  execsql 
1180: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e  {.    PRAGMA syn
1190: 63 68 72 6f 6e 6f 75 73 3d 32 3b 0a 20 20 20 20  chronous=2;.    
11a0: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
11b0: 75 73 3b 0a 20 20 7d 0a 7d 20 7b 32 7d 0a 7d 20  us;.  }.} {2}.} 
11c0: 3b 23 20 69 66 63 61 70 61 62 6c 65 20 70 61 67  ;# ifcapable pag
11d0: 65 72 5f 70 72 61 67 6d 61 73 0a 0a 23 20 54 65  er_pragmas..# Te
11e0: 73 74 20 74 75 72 6e 69 6e 67 20 22 66 6c 61 67  st turning "flag
11f0: 22 20 70 72 61 67 6d 61 73 20 6f 6e 20 61 6e 64  " pragmas on and
1200: 20 6f 66 66 2e 0a 23 0a 69 66 63 61 70 61 62 6c   off..#.ifcapabl
1210: 65 20 64 65 62 75 67 20 7b 0a 20 20 23 20 50 72  e debug {.  # Pr
1220: 61 67 6d 61 20 22 76 64 62 65 5f 6c 69 73 74 69  agma "vdbe_listi
1230: 6e 67 22 20 69 73 20 6f 6e 6c 79 20 61 76 61 69  ng" is only avai
1240: 6c 61 62 6c 65 20 69 66 20 63 6f 6d 70 69 6c 65  lable if compile
1250: 64 20 77 69 74 68 20 53 51 4c 49 54 45 5f 44 45  d with SQLITE_DE
1260: 42 55 47 0a 20 20 23 0a 20 20 64 6f 5f 74 65 73  BUG.  #.  do_tes
1270: 74 20 70 72 61 67 6d 61 2d 31 2e 31 35 20 7b 0a  t pragma-1.15 {.
1280: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
1290: 20 20 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f      PRAGMA vdbe_
12a0: 6c 69 73 74 69 6e 67 3d 59 45 53 3b 0a 20 20 20  listing=YES;.   
12b0: 20 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f 6c     PRAGMA vdbe_l
12c0: 69 73 74 69 6e 67 3b 0a 20 20 20 20 7d 0a 20 20  isting;.    }.  
12d0: 7d 20 7b 31 7d 0a 20 20 64 6f 5f 74 65 73 74 20  } {1}.  do_test 
12e0: 70 72 61 67 6d 61 2d 31 2e 31 36 20 7b 0a 20 20  pragma-1.16 {.  
12f0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1300: 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f 6c 69    PRAGMA vdbe_li
1310: 73 74 69 6e 67 3d 4e 4f 3b 0a 20 20 20 20 20 20  sting=NO;.      
1320: 50 52 41 47 4d 41 20 76 64 62 65 5f 6c 69 73 74  PRAGMA vdbe_list
1330: 69 6e 67 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  ing;.    }.  } {
1340: 30 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 72  0}.}..do_test pr
1350: 61 67 6d 61 2d 31 2e 31 37 20 7b 0a 20 20 65 78  agma-1.17 {.  ex
1360: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
1370: 4d 41 20 70 61 72 73 65 72 5f 74 72 61 63 65 3d  MA parser_trace=
1380: 4f 4e 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 70  ON;.    PRAGMA p
1390: 61 72 73 65 72 5f 74 72 61 63 65 3d 4f 46 46 3b  arser_trace=OFF;
13a0: 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73  .  }.} {}.do_tes
13b0: 74 20 70 72 61 67 6d 61 2d 31 2e 31 38 20 7b 0a  t pragma-1.18 {.
13c0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
13d0: 50 52 41 47 4d 41 20 62 6f 67 75 73 20 3d 20 2d  PRAGMA bogus = -
13e0: 31 32 33 34 3b 20 20 2d 2d 20 50 61 72 73 69 6e  1234;  -- Parsin
13f0: 67 20 6f 66 20 6e 65 67 61 74 69 76 65 20 76 61  g of negative va
1400: 6c 75 65 73 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23  lues.  }.} {}..#
1410: 20 54 65 73 74 20 6d 6f 64 69 66 79 69 6e 67 20   Test modifying 
1420: 74 68 65 20 73 61 66 65 74 79 5f 6c 65 76 65 6c  the safety_level
1430: 20 6f 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   of an attached 
1440: 64 61 74 61 62 61 73 65 2e 0a 69 66 63 61 70 61  database..ifcapa
1450: 62 6c 65 20 70 61 67 65 72 5f 70 72 61 67 6d 61  ble pager_pragma
1460: 73 26 26 61 74 74 61 63 68 20 7b 0a 20 20 64 6f  s&&attach {.  do
1470: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 32 2e 31  _test pragma-2.1
1480: 20 7b 0a 20 20 20 20 66 69 6c 65 20 64 65 6c 65   {.    file dele
1490: 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74 32 2e  te -force test2.
14a0: 64 62 0a 20 20 20 20 66 69 6c 65 20 64 65 6c 65  db.    file dele
14b0: 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74 32 2e  te -force test2.
14c0: 64 62 2d 6a 6f 75 72 6e 61 6c 0a 20 20 20 20 65  db-journal.    e
14d0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 41  xecsql {.      A
14e0: 54 54 41 43 48 20 27 74 65 73 74 32 2e 64 62 27  TTACH 'test2.db'
14f0: 20 41 53 20 61 75 78 3b 0a 20 20 20 20 7d 20 0a   AS aux;.    } .
1500: 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74 65 73 74    } {}.  do_test
1510: 20 70 72 61 67 6d 61 2d 32 2e 32 20 7b 0a 20 20   pragma-2.2 {.  
1520: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1530: 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73 79 6e    pragma aux.syn
1540: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 7d 20  chronous;.    } 
1550: 0a 20 20 7d 20 7b 32 7d 0a 20 20 64 6f 5f 74 65  .  } {2}.  do_te
1560: 73 74 20 70 72 61 67 6d 61 2d 32 2e 33 20 7b 0a  st pragma-2.3 {.
1570: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
1580: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73      pragma aux.s
1590: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46  ynchronous = OFF
15a0: 3b 0a 20 20 20 20 20 20 70 72 61 67 6d 61 20 61  ;.      pragma a
15b0: 75 78 2e 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a  ux.synchronous;.
15c0: 20 20 20 20 20 20 70 72 61 67 6d 61 20 73 79 6e        pragma syn
15d0: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 7d 20  chronous;.    } 
15e0: 0a 20 20 7d 20 7b 30 20 32 7d 0a 20 20 64 6f 5f  .  } {0 2}.  do_
15f0: 74 65 73 74 20 70 72 61 67 6d 61 2d 32 2e 34 20  test pragma-2.4 
1600: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a  {.    execsql {.
1610: 20 20 20 20 20 20 70 72 61 67 6d 61 20 61 75 78        pragma aux
1620: 2e 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f  .synchronous = O
1630: 4e 3b 0a 20 20 20 20 20 20 70 72 61 67 6d 61 20  N;.      pragma 
1640: 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20  synchronous;.   
1650: 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73 79     pragma aux.sy
1660: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 7d  nchronous;.    }
1670: 20 0a 20 20 7d 20 7b 32 20 31 7d 0a 7d 20 3b 23   .  } {2 1}.} ;#
1680: 20 69 66 63 61 70 61 62 6c 65 20 70 61 67 65 72   ifcapable pager
1690: 5f 70 72 61 67 6d 61 73 0a 0a 23 20 43 6f 6e 73  _pragmas..# Cons
16a0: 74 72 75 63 74 20 61 20 63 6f 72 72 75 70 74 65  truct a corrupte
16b0: 64 20 69 6e 64 65 78 20 61 6e 64 20 6d 61 6b 65  d index and make
16c0: 20 73 75 72 65 20 74 68 65 20 69 6e 74 65 67 72   sure the integr
16d0: 69 74 79 5f 63 68 65 63 6b 0a 23 20 70 72 61 67  ity_check.# prag
16e0: 6d 61 20 66 69 6e 64 73 20 69 74 2e 0a 23 0a 23  ma finds it..#.#
16f0: 20 54 68 65 73 65 20 74 65 73 74 73 20 77 6f 6e   These tests won
1700: 27 74 20 77 6f 72 6b 20 69 66 20 74 68 65 20 64  't work if the d
1710: 61 74 61 62 61 73 65 20 69 73 20 65 6e 63 72 79  atabase is encry
1720: 70 74 65 64 0a 23 0a 64 6f 5f 74 65 73 74 20 70  pted.#.do_test p
1730: 72 61 67 6d 61 2d 33 2e 31 20 7b 0a 20 20 64 62  ragma-3.1 {.  db
1740: 20 63 6c 6f 73 65 0a 20 20 66 69 6c 65 20 64 65   close.  file de
1750: 6c 65 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74  lete -force test
1760: 2e 64 62 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72  .db test.db-jour
1770: 6e 61 6c 0a 20 20 73 71 6c 69 74 65 33 20 64 62  nal.  sqlite3 db
1780: 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73   test.db.  execs
1790: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
17a0: 61 75 74 6f 5f 76 61 63 75 75 6d 3d 4f 46 46 3b  auto_vacuum=OFF;
17b0: 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20 20  .    BEGIN;.    
17c0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
17d0: 61 2c 62 2c 63 29 3b 0a 20 20 20 20 43 52 45 41  a,b,c);.    CREA
17e0: 54 45 20 49 4e 44 45 58 20 69 32 20 4f 4e 20 74  TE INDEX i2 ON t
17f0: 32 28 61 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  2(a);.    INSERT
1800: 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28   INTO t2 VALUES(
1810: 31 31 2c 32 2c 33 29 3b 0a 20 20 20 20 49 4e 53  11,2,3);.    INS
1820: 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55  ERT INTO t2 VALU
1830: 45 53 28 32 32 2c 33 2c 34 29 3b 0a 20 20 20 20  ES(22,3,4);.    
1840: 43 4f 4d 4d 49 54 3b 0a 20 20 20 20 53 45 4c 45  COMMIT;.    SELE
1850: 43 54 20 72 6f 77 69 64 2c 20 2a 20 66 72 6f 6d  CT rowid, * from
1860: 20 74 32 3b 0a 20 20 7d 0a 7d 20 7b 31 20 31 31   t2;.  }.} {1 11
1870: 20 32 20 33 20 32 20 32 32 20 33 20 34 7d 0a 69   2 3 2 22 3 4}.i
1880: 66 63 61 70 61 62 6c 65 20 61 74 74 61 63 68 20  fcapable attach 
1890: 7b 0a 20 20 69 66 20 7b 21 5b 73 71 6c 69 74 65  {.  if {![sqlite
18a0: 33 20 2d 68 61 73 2d 63 6f 64 65 63 5d 20 26 26  3 -has-codec] &&
18b0: 20 24 73 71 6c 69 74 65 5f 6f 70 74 69 6f 6e 73   $sqlite_options
18c0: 28 69 6e 74 65 67 72 69 74 79 63 6b 29 7d 20 7b  (integrityck)} {
18d0: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61  .    do_test pra
18e0: 67 6d 61 2d 33 2e 32 20 7b 0a 20 20 20 20 20 20  gma-3.2 {.      
18f0: 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20  db eval {SELECT 
1900: 72 6f 6f 74 70 61 67 65 20 46 52 4f 4d 20 73 71  rootpage FROM sq
1910: 6c 69 74 65 5f 6d 61 73 74 65 72 20 57 48 45 52  lite_master WHER
1920: 45 20 6e 61 6d 65 3d 27 69 32 27 7d 20 62 72 65  E name='i2'} bre
1930: 61 6b 0a 20 20 20 20 20 20 73 65 74 20 70 67 73  ak.      set pgs
1940: 7a 20 5b 64 62 20 65 76 61 6c 20 7b 50 52 41 47  z [db eval {PRAG
1950: 4d 41 20 70 61 67 65 5f 73 69 7a 65 7d 5d 0a 20  MA page_size}]. 
1960: 20 20 20 20 20 23 20 6f 76 65 72 77 72 69 74 65       # overwrite
1970: 20 74 68 65 20 68 65 61 64 65 72 20 6f 6e 20 74   the header on t
1980: 68 65 20 72 6f 6f 74 70 61 67 65 20 6f 66 20 74  he rootpage of t
1990: 68 65 20 69 6e 64 65 78 20 69 6e 20 6f 72 64 65  he index in orde
19a0: 72 20 74 6f 0a 20 20 20 20 20 20 23 20 6d 61 6b  r to.      # mak
19b0: 65 20 74 68 65 20 69 6e 64 65 78 20 61 70 70 65  e the index appe
19c0: 61 72 20 74 6f 20 62 65 20 65 6d 70 74 79 2e 0a  ar to be empty..
19d0: 20 20 20 20 20 20 23 0a 20 20 20 20 20 20 73 65        #.      se
19e0: 74 20 6f 66 66 73 65 74 20 5b 65 78 70 72 20 7b  t offset [expr {
19f0: 24 70 67 73 7a 2a 28 24 72 6f 6f 74 70 61 67 65  $pgsz*($rootpage
1a00: 2d 31 29 7d 5d 0a 20 20 20 20 20 20 68 65 78 69  -1)}].      hexi
1a10: 6f 5f 77 72 69 74 65 20 74 65 73 74 2e 64 62 20  o_write test.db 
1a20: 24 6f 66 66 73 65 74 20 30 61 30 30 30 30 30 30  $offset 0a000000
1a30: 30 30 30 34 30 30 30 30 30 30 30 30 30 30 0a 20  00040000000000. 
1a40: 20 20 20 20 20 64 62 20 63 6c 6f 73 65 0a 20 20       db close.  
1a50: 20 20 20 20 73 71 6c 69 74 65 33 20 64 62 20 74      sqlite3 db t
1a60: 65 73 74 2e 64 62 0a 20 20 20 20 20 20 65 78 65  est.db.      exe
1a70: 63 73 71 6c 20 7b 50 52 41 47 4d 41 20 69 6e 74  csql {PRAGMA int
1a80: 65 67 72 69 74 79 5f 63 68 65 63 6b 7d 0a 20 20  egrity_check}.  
1a90: 20 20 7d 20 7b 7b 72 6f 77 69 64 20 31 20 6d 69    } {{rowid 1 mi
1aa0: 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78  ssing from index
1ab0: 20 69 32 7d 20 7b 72 6f 77 69 64 20 32 20 6d 69   i2} {rowid 2 mi
1ac0: 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78  ssing from index
1ad0: 20 69 32 7d 20 7b 77 72 6f 6e 67 20 23 20 6f 66   i2} {wrong # of
1ae0: 20 65 6e 74 72 69 65 73 20 69 6e 20 69 6e 64 65   entries in inde
1af0: 78 20 69 32 7d 7d 0a 20 20 20 20 64 6f 5f 74 65  x i2}}.    do_te
1b00: 73 74 20 70 72 61 67 6d 61 2d 33 2e 33 20 7b 0a  st pragma-3.3 {.
1b10: 20 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b 50        execsql {P
1b20: 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f  RAGMA integrity_
1b30: 63 68 65 63 6b 3d 31 7d 0a 20 20 20 20 7d 20 7b  check=1}.    } {
1b40: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
1b50: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d   from index i2}}
1b60: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61  .    do_test pra
1b70: 67 6d 61 2d 33 2e 34 20 7b 0a 20 20 20 20 20 20  gma-3.4 {.      
1b80: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
1b90: 20 20 41 54 54 41 43 48 20 44 41 54 41 42 41 53    ATTACH DATABAS
1ba0: 45 20 27 74 65 73 74 2e 64 62 27 20 41 53 20 74  E 'test.db' AS t
1bb0: 32 3b 0a 20 20 20 20 20 20 20 20 50 52 41 47 4d  2;.        PRAGM
1bc0: 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  A integrity_chec
1bd0: 6b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20  k.      }.    } 
1be0: 7b 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e  {{rowid 1 missin
1bf0: 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d  g from index i2}
1c00: 20 7b 72 6f 77 69 64 20 32 20 6d 69 73 73 69 6e   {rowid 2 missin
1c10: 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d  g from index i2}
1c20: 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74   {wrong # of ent
1c30: 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32  ries in index i2
1c40: 7d 20 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69  } {rowid 1 missi
1c50: 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32  ng from index i2
1c60: 7d 20 7b 72 6f 77 69 64 20 32 20 6d 69 73 73 69  } {rowid 2 missi
1c70: 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32  ng from index i2
1c80: 7d 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e  } {wrong # of en
1c90: 74 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69  tries in index i
1ca0: 32 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20  2}}.    do_test 
1cb0: 70 72 61 67 6d 61 2d 33 2e 35 20 7b 0a 20 20 20  pragma-3.5 {.   
1cc0: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
1cd0: 20 20 20 20 20 50 52 41 47 4d 41 20 69 6e 74 65       PRAGMA inte
1ce0: 67 72 69 74 79 5f 63 68 65 63 6b 3d 34 0a 20 20  grity_check=4.  
1cf0: 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 7b 72 6f      }.    } {{ro
1d00: 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72  wid 1 missing fr
1d10: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f  om index i2} {ro
1d20: 77 69 64 20 32 20 6d 69 73 73 69 6e 67 20 66 72  wid 2 missing fr
1d30: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 77 72  om index i2} {wr
1d40: 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69 65 73  ong # of entries
1d50: 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 20 7b 72   in index i2} {r
1d60: 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66  owid 1 missing f
1d70: 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20  rom index i2}}. 
1d80: 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d     do_test pragm
1d90: 61 2d 33 2e 36 20 7b 0a 20 20 20 20 20 20 65 78  a-3.6 {.      ex
1da0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20  ecsql {.        
1db0: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
1dc0: 5f 63 68 65 63 6b 3d 78 79 7a 0a 20 20 20 20 20  _check=xyz.     
1dd0: 20 7d 0a 20 20 20 20 7d 20 7b 7b 72 6f 77 69 64   }.    } {{rowid
1de0: 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20   1 missing from 
1df0: 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f 77 69 64  index i2} {rowid
1e00: 20 32 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20   2 missing from 
1e10: 69 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e 67  index i2} {wrong
1e20: 20 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e   # of entries in
1e30: 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f 77 69   index i2} {rowi
1e40: 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d  d 1 missing from
1e50: 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f 77 69   index i2} {rowi
1e60: 64 20 32 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d  d 2 missing from
1e70: 20 69 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e   index i2} {wron
1e80: 67 20 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69  g # of entries i
1e90: 6e 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20 20 20  n index i2}}.   
1ea0: 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d   do_test pragma-
1eb0: 33 2e 37 20 7b 0a 20 20 20 20 20 20 65 78 65 63  3.7 {.      exec
1ec0: 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 50 52  sql {.        PR
1ed0: 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63  AGMA integrity_c
1ee0: 68 65 63 6b 3d 30 0a 20 20 20 20 20 20 7d 0a 20  heck=0.      }. 
1ef0: 20 20 20 7d 20 7b 7b 72 6f 77 69 64 20 31 20 6d     } {{rowid 1 m
1f00: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
1f10: 78 20 69 32 7d 20 7b 72 6f 77 69 64 20 32 20 6d  x i2} {rowid 2 m
1f20: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
1f30: 78 20 69 32 7d 20 7b 77 72 6f 6e 67 20 23 20 6f  x i2} {wrong # o
1f40: 66 20 65 6e 74 72 69 65 73 20 69 6e 20 69 6e 64  f entries in ind
1f50: 65 78 20 69 32 7d 20 7b 72 6f 77 69 64 20 31 20  ex i2} {rowid 1 
1f60: 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64  missing from ind
1f70: 65 78 20 69 32 7d 20 7b 72 6f 77 69 64 20 32 20  ex i2} {rowid 2 
1f80: 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64  missing from ind
1f90: 65 78 20 69 32 7d 20 7b 77 72 6f 6e 67 20 23 20  ex i2} {wrong # 
1fa0: 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20 69 6e  of entries in in
1fb0: 64 65 78 20 69 32 7d 7d 0a 20 20 0a 20 20 20 20  dex i2}}.  .    
1fc0: 23 20 41 64 64 20 61 64 64 69 74 69 6f 6e 61 6c  # Add additional
1fd0: 20 63 6f 72 72 75 70 74 69 6f 6e 20 62 79 20 61   corruption by a
1fe0: 70 70 65 6e 64 69 6e 67 20 75 6e 75 73 65 64 20  ppending unused 
1ff0: 70 61 67 65 73 20 74 6f 20 74 68 65 20 65 6e 64  pages to the end
2000: 20 6f 66 0a 20 20 20 20 23 20 74 68 65 20 64 61   of.    # the da
2010: 74 61 62 61 73 65 20 66 69 6c 65 20 74 65 73 74  tabase file test
2020: 65 72 72 2e 64 62 0a 20 20 20 20 23 0a 20 20 20  err.db.    #.   
2030: 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d   do_test pragma-
2040: 33 2e 38 20 7b 0a 20 20 20 20 20 20 65 78 65 63  3.8 {.      exec
2050: 73 71 6c 20 7b 44 45 54 41 43 48 20 74 32 7d 0a  sql {DETACH t2}.
2060: 20 20 20 20 20 20 66 69 6c 65 20 64 65 6c 65 74        file delet
2070: 65 20 2d 66 6f 72 63 65 20 74 65 73 74 65 72 72  e -force testerr
2080: 2e 64 62 20 74 65 73 74 65 72 72 2e 64 62 2d 6a  .db testerr.db-j
2090: 6f 75 72 6e 61 6c 0a 20 20 20 20 20 20 73 65 74  ournal.      set
20a0: 20 6f 75 74 20 5b 6f 70 65 6e 20 74 65 73 74 65   out [open teste
20b0: 72 72 2e 64 62 20 77 5d 0a 20 20 20 20 20 20 66  rr.db w].      f
20c0: 63 6f 6e 66 69 67 75 72 65 20 24 6f 75 74 20 2d  configure $out -
20d0: 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 69 6e 61  translation bina
20e0: 72 79 0a 20 20 20 20 20 20 73 65 74 20 69 6e 20  ry.      set in 
20f0: 5b 6f 70 65 6e 20 74 65 73 74 2e 64 62 20 72 5d  [open test.db r]
2100: 0a 20 20 20 20 20 20 66 63 6f 6e 66 69 67 75 72  .      fconfigur
2110: 65 20 24 69 6e 20 2d 74 72 61 6e 73 6c 61 74 69  e $in -translati
2120: 6f 6e 20 62 69 6e 61 72 79 0a 20 20 20 20 20 20  on binary.      
2130: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20  puts -nonewline 
2140: 24 6f 75 74 20 5b 72 65 61 64 20 24 69 6e 5d 0a  $out [read $in].
2150: 20 20 20 20 20 20 73 65 65 6b 20 24 69 6e 20 30        seek $in 0
2160: 0a 20 20 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e  .      puts -non
2170: 65 77 6c 69 6e 65 20 24 6f 75 74 20 5b 72 65 61  ewline $out [rea
2180: 64 20 24 69 6e 5d 0a 20 20 20 20 20 20 63 6c 6f  d $in].      clo
2190: 73 65 20 24 69 6e 0a 20 20 20 20 20 20 63 6c 6f  se $in.      clo
21a0: 73 65 20 24 6f 75 74 0a 20 20 20 20 20 20 65 78  se $out.      ex
21b0: 65 63 73 71 6c 20 7b 52 45 49 4e 44 45 58 20 74  ecsql {REINDEX t
21c0: 32 7d 0a 20 20 20 20 20 20 65 78 65 63 73 71 6c  2}.      execsql
21d0: 20 7b 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69   {PRAGMA integri
21e0: 74 79 5f 63 68 65 63 6b 7d 0a 20 20 20 20 7d 20  ty_check}.    } 
21f0: 7b 6f 6b 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74  {ok}.    do_test
2200: 20 70 72 61 67 6d 61 2d 33 2e 38 2e 31 20 7b 0a   pragma-3.8.1 {.
2210: 20 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b 50        execsql {P
2220: 52 41 47 4d 41 20 71 75 69 63 6b 5f 63 68 65 63  RAGMA quick_chec
2230: 6b 7d 0a 20 20 20 20 7d 20 7b 6f 6b 7d 0a 20 20  k}.    } {ok}.  
2240: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
2250: 2d 33 2e 39 20 7b 0a 20 20 20 20 20 20 65 78 65  -3.9 {.      exe
2260: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 41  csql {.        A
2270: 54 54 41 43 48 20 27 74 65 73 74 65 72 72 2e 64  TTACH 'testerr.d
2280: 62 27 20 41 53 20 74 32 3b 0a 20 20 20 20 20 20  b' AS t2;.      
2290: 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69    PRAGMA integri
22a0: 74 79 5f 63 68 65 63 6b 0a 20 20 20 20 20 20 7d  ty_check.      }
22b0: 0a 20 20 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20  .    } {{*** in 
22c0: 64 61 74 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a  database t2 ***.
22d0: 50 61 67 65 20 34 20 69 73 20 6e 65 76 65 72 20  Page 4 is never 
22e0: 75 73 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e  used.Page 5 is n
22f0: 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 36  ever used.Page 6
2300: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20   is never used} 
2310: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
2320: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20   from index i2} 
2330: 7b 72 6f 77 69 64 20 32 20 6d 69 73 73 69 6e 67  {rowid 2 missing
2340: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20   from index i2} 
2350: 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72  {wrong # of entr
2360: 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d  ies in index i2}
2370: 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72  }.    do_test pr
2380: 61 67 6d 61 2d 33 2e 31 30 20 7b 0a 20 20 20 20  agma-3.10 {.    
2390: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
23a0: 20 20 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67      PRAGMA integ
23b0: 72 69 74 79 5f 63 68 65 63 6b 3d 31 0a 20 20 20  rity_check=1.   
23c0: 20 20 20 7d 0a 20 20 20 20 7d 20 7b 7b 2a 2a 2a     }.    } {{***
23d0: 20 69 6e 20 64 61 74 61 62 61 73 65 20 74 32 20   in database t2 
23e0: 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73 20 6e 65  ***.Page 4 is ne
23f0: 76 65 72 20 75 73 65 64 7d 7d 0a 20 20 20 20 64  ver used}}.    d
2400: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e  o_test pragma-3.
2410: 31 31 20 7b 0a 20 20 20 20 20 20 65 78 65 63 73  11 {.      execs
2420: 71 6c 20 7b 0a 20 20 20 20 20 20 20 20 50 52 41  ql {.        PRA
2430: 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68  GMA integrity_ch
2440: 65 63 6b 3d 35 0a 20 20 20 20 20 20 7d 0a 20 20  eck=5.      }.  
2450: 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74    } {{*** in dat
2460: 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a 50 61 67  abase t2 ***.Pag
2470: 65 20 34 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 4 is never use
2480: 64 0a 50 61 67 65 20 35 20 69 73 20 6e 65 76 65  d.Page 5 is neve
2490: 72 20 75 73 65 64 0a 50 61 67 65 20 36 20 69 73  r used.Page 6 is
24a0: 20 6e 65 76 65 72 20 75 73 65 64 7d 20 7b 72 6f   never used} {ro
24b0: 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72  wid 1 missing fr
24c0: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f  om index i2} {ro
24d0: 77 69 64 20 32 20 6d 69 73 73 69 6e 67 20 66 72  wid 2 missing fr
24e0: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20 20  om index i2}}.  
24f0: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
2500: 2d 33 2e 31 32 20 7b 0a 20 20 20 20 20 20 65 78  -3.12 {.      ex
2510: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 20 20  ecsql {.        
2520: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
2530: 5f 63 68 65 63 6b 3d 34 0a 20 20 20 20 20 20 7d  _check=4.      }
2540: 0a 20 20 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20  .    } {{*** in 
2550: 64 61 74 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a  database t2 ***.
2560: 50 61 67 65 20 34 20 69 73 20 6e 65 76 65 72 20  Page 4 is never 
2570: 75 73 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e  used.Page 5 is n
2580: 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 36  ever used.Page 6
2590: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20   is never used} 
25a0: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
25b0: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d   from index i2}}
25c0: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61  .    do_test pra
25d0: 67 6d 61 2d 33 2e 31 33 20 7b 0a 20 20 20 20 20  gma-3.13 {.     
25e0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20   execsql {.     
25f0: 20 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72     PRAGMA integr
2600: 69 74 79 5f 63 68 65 63 6b 3d 33 0a 20 20 20 20  ity_check=3.    
2610: 20 20 7d 0a 20 20 20 20 7d 20 7b 7b 2a 2a 2a 20    }.    } {{*** 
2620: 69 6e 20 64 61 74 61 62 61 73 65 20 74 32 20 2a  in database t2 *
2630: 2a 2a 0a 50 61 67 65 20 34 20 69 73 20 6e 65 76  **.Page 4 is nev
2640: 65 72 20 75 73 65 64 0a 50 61 67 65 20 35 20 69  er used.Page 5 i
2650: 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67  s never used.Pag
2660: 65 20 36 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 6 is never use
2670: 64 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20  d}}.    do_test 
2680: 70 72 61 67 6d 61 2d 33 2e 31 34 20 7b 0a 20 20  pragma-3.14 {.  
2690: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
26a0: 20 20 20 20 20 20 50 52 41 47 4d 41 20 69 6e 74        PRAGMA int
26b0: 65 67 72 69 74 79 5f 63 68 65 63 6b 28 32 29 0a  egrity_check(2).
26c0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 7b        }.    } {{
26d0: 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65 20  *** in database 
26e0: 74 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73  t2 ***.Page 4 is
26f0: 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65   never used.Page
2700: 20 35 20 69 73 20 6e 65 76 65 72 20 75 73 65 64   5 is never used
2710: 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70  }}.    do_test p
2720: 72 61 67 6d 61 2d 33 2e 31 35 20 7b 0a 20 20 20  ragma-3.15 {.   
2730: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
2740: 20 20 20 20 20 41 54 54 41 43 48 20 27 74 65 73       ATTACH 'tes
2750: 74 65 72 72 2e 64 62 27 20 41 53 20 74 33 3b 0a  terr.db' AS t3;.
2760: 20 20 20 20 20 20 20 20 50 52 41 47 4d 41 20 69          PRAGMA i
2770: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 0a 20  ntegrity_check. 
2780: 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 7b 2a       }.    } {{*
2790: 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65 20 74  ** in database t
27a0: 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73 20  2 ***.Page 4 is 
27b0: 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20  never used.Page 
27c0: 35 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a  5 is never used.
27d0: 50 61 67 65 20 36 20 69 73 20 6e 65 76 65 72 20  Page 6 is never 
27e0: 75 73 65 64 7d 20 7b 72 6f 77 69 64 20 31 20 6d  used} {rowid 1 m
27f0: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
2800: 78 20 69 32 7d 20 7b 72 6f 77 69 64 20 32 20 6d  x i2} {rowid 2 m
2810: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
2820: 78 20 69 32 7d 20 7b 77 72 6f 6e 67 20 23 20 6f  x i2} {wrong # o
2830: 66 20 65 6e 74 72 69 65 73 20 69 6e 20 69 6e 64  f entries in ind
2840: 65 78 20 69 32 7d 20 7b 2a 2a 2a 20 69 6e 20 64  ex i2} {*** in d
2850: 61 74 61 62 61 73 65 20 74 33 20 2a 2a 2a 0a 50  atabase t3 ***.P
2860: 61 67 65 20 34 20 69 73 20 6e 65 76 65 72 20 75  age 4 is never u
2870: 73 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e 65  sed.Page 5 is ne
2880: 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 36 20  ver used.Page 6 
2890: 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20 7b  is never used} {
28a0: 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20  rowid 1 missing 
28b0: 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b  from index i2} {
28c0: 72 6f 77 69 64 20 32 20 6d 69 73 73 69 6e 67 20  rowid 2 missing 
28d0: 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b  from index i2} {
28e0: 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69  wrong # of entri
28f0: 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 7d  es in index i2}}
2900: 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61  .    do_test pra
2910: 67 6d 61 2d 33 2e 31 36 20 7b 0a 20 20 20 20 20  gma-3.16 {.     
2920: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20   execsql {.     
2930: 20 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72     PRAGMA integr
2940: 69 74 79 5f 63 68 65 63 6b 28 31 30 29 0a 20 20  ity_check(10).  
2950: 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b 7b 2a 2a      }.    } {{**
2960: 2a 20 69 6e 20 64 61 74 61 62 61 73 65 20 74 32  * in database t2
2970: 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73 20 6e   ***.Page 4 is n
2980: 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 35  ever used.Page 5
2990: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50   is never used.P
29a0: 61 67 65 20 36 20 69 73 20 6e 65 76 65 72 20 75  age 6 is never u
29b0: 73 65 64 7d 20 7b 72 6f 77 69 64 20 31 20 6d 69  sed} {rowid 1 mi
29c0: 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78  ssing from index
29d0: 20 69 32 7d 20 7b 72 6f 77 69 64 20 32 20 6d 69   i2} {rowid 2 mi
29e0: 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78  ssing from index
29f0: 20 69 32 7d 20 7b 77 72 6f 6e 67 20 23 20 6f 66   i2} {wrong # of
2a00: 20 65 6e 74 72 69 65 73 20 69 6e 20 69 6e 64 65   entries in inde
2a10: 78 20 69 32 7d 20 7b 2a 2a 2a 20 69 6e 20 64 61  x i2} {*** in da
2a20: 74 61 62 61 73 65 20 74 33 20 2a 2a 2a 0a 50 61  tabase t3 ***.Pa
2a30: 67 65 20 34 20 69 73 20 6e 65 76 65 72 20 75 73  ge 4 is never us
2a40: 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e 65 76  ed.Page 5 is nev
2a50: 65 72 20 75 73 65 64 0a 50 61 67 65 20 36 20 69  er used.Page 6 i
2a60: 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20 7b 72  s never used} {r
2a70: 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66  owid 1 missing f
2a80: 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20  rom index i2}}. 
2a90: 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d     do_test pragm
2aa0: 61 2d 33 2e 31 37 20 7b 0a 20 20 20 20 20 20 65  a-3.17 {.      e
2ab0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 20  xecsql {.       
2ac0: 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74   PRAGMA integrit
2ad0: 79 5f 63 68 65 63 6b 3d 38 0a 20 20 20 20 20 20  y_check=8.      
2ae0: 7d 0a 20 20 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e  }.    } {{*** in
2af0: 20 64 61 74 61 62 61 73 65 20 74 32 20 2a 2a 2a   database t2 ***
2b00: 0a 50 61 67 65 20 34 20 69 73 20 6e 65 76 65 72  .Page 4 is never
2b10: 20 75 73 65 64 0a 50 61 67 65 20 35 20 69 73 20   used.Page 5 is 
2b20: 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20  never used.Page 
2b30: 36 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d  6 is never used}
2b40: 20 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e   {rowid 1 missin
2b50: 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d  g from index i2}
2b60: 20 7b 72 6f 77 69 64 20 32 20 6d 69 73 73 69 6e   {rowid 2 missin
2b70: 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d  g from index i2}
2b80: 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74   {wrong # of ent
2b90: 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32  ries in index i2
2ba0: 7d 20 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61  } {*** in databa
2bb0: 73 65 20 74 33 20 2a 2a 2a 0a 50 61 67 65 20 34  se t3 ***.Page 4
2bc0: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50   is never used.P
2bd0: 61 67 65 20 35 20 69 73 20 6e 65 76 65 72 20 75  age 5 is never u
2be0: 73 65 64 7d 7d 0a 20 20 20 20 64 6f 5f 74 65 73  sed}}.    do_tes
2bf0: 74 20 70 72 61 67 6d 61 2d 33 2e 31 38 20 7b 0a  t pragma-3.18 {.
2c00: 20 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a        execsql {.
2c10: 20 20 20 20 20 20 20 20 50 52 41 47 4d 41 20 69          PRAGMA i
2c20: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3d 34  ntegrity_check=4
2c30: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 7b  .      }.    } {
2c40: 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65  {*** in database
2c50: 20 74 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69   t2 ***.Page 4 i
2c60: 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67  s never used.Pag
2c70: 65 20 35 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 5 is never use
2c80: 64 0a 50 61 67 65 20 36 20 69 73 20 6e 65 76 65  d.Page 6 is neve
2c90: 72 20 75 73 65 64 7d 20 7b 72 6f 77 69 64 20 31  r used} {rowid 1
2ca0: 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e   missing from in
2cb0: 64 65 78 20 69 32 7d 7d 0a 20 20 7d 0a 20 20 64  dex i2}}.  }.  d
2cc0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e  o_test pragma-3.
2cd0: 39 39 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71  99 {.    catchsq
2ce0: 6c 20 7b 44 45 54 41 43 48 20 74 33 7d 0a 20 20  l {DETACH t3}.  
2cf0: 20 20 63 61 74 63 68 73 71 6c 20 7b 44 45 54 41    catchsql {DETA
2d00: 43 48 20 74 32 7d 0a 20 20 20 20 66 69 6c 65 20  CH t2}.    file 
2d10: 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 74 65  delete -force te
2d20: 73 74 65 72 72 2e 64 62 20 74 65 73 74 65 72 72  sterr.db testerr
2d30: 2e 64 62 2d 6a 6f 75 72 6e 61 6c 0a 20 20 20 20  .db-journal.    
2d40: 63 61 74 63 68 73 71 6c 20 7b 44 52 4f 50 20 49  catchsql {DROP I
2d50: 4e 44 45 58 20 69 32 7d 0a 20 20 7d 20 7b 30 20  NDEX i2}.  } {0 
2d60: 7b 7d 7d 0a 7d 0a 0a 23 20 54 65 73 74 20 6d 6f  {}}.}..# Test mo
2d70: 64 69 66 79 69 6e 67 20 74 68 65 20 63 61 63 68  difying the cach
2d80: 65 5f 73 69 7a 65 20 6f 66 20 61 6e 20 61 74 74  e_size of an att
2d90: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 0a  ached database..
2da0: 69 66 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f  ifcapable pager_
2db0: 70 72 61 67 6d 61 73 26 26 61 74 74 61 63 68 20  pragmas&&attach 
2dc0: 7b 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  {.do_test pragma
2dd0: 2d 34 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -4.1 {.  execsql
2de0: 20 7b 0a 20 20 20 20 41 54 54 41 43 48 20 27 74   {.    ATTACH 't
2df0: 65 73 74 32 2e 64 62 27 20 41 53 20 61 75 78 3b  est2.db' AS aux;
2e00: 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e  .    pragma aux.
2e10: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
2e20: 70 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75  pragma aux.defau
2e30: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
2e40: 20 7d 20 0a 7d 20 5b 6c 69 73 74 20 24 44 46 4c   } .} [list $DFL
2e50: 54 5f 43 41 43 48 45 5f 53 5a 20 24 44 46 4c 54  T_CACHE_SZ $DFLT
2e60: 5f 43 41 43 48 45 5f 53 5a 5d 0a 64 6f 5f 74 65  _CACHE_SZ].do_te
2e70: 73 74 20 70 72 61 67 6d 61 2d 34 2e 32 20 7b 0a  st pragma-4.2 {.
2e80: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2e90: 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65  pragma aux.cache
2ea0: 5f 73 69 7a 65 20 3d 20 35 30 3b 0a 20 20 20 20  _size = 50;.    
2eb0: 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65  pragma aux.cache
2ec0: 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72 61 67 6d  _size;.    pragm
2ed0: 61 20 61 75 78 2e 64 65 66 61 75 6c 74 5f 63 61  a aux.default_ca
2ee0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d  che_size;.  } .}
2ef0: 20 5b 6c 69 73 74 20 35 30 20 24 44 46 4c 54 5f   [list 50 $DFLT_
2f00: 43 41 43 48 45 5f 53 5a 5d 0a 64 6f 5f 74 65 73  CACHE_SZ].do_tes
2f10: 74 20 70 72 61 67 6d 61 2d 34 2e 33 20 7b 0a 20  t pragma-4.3 {. 
2f20: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70   execsql {.    p
2f30: 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75 6c  ragma aux.defaul
2f40: 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 3d 20 34  t_cache_size = 4
2f50: 35 36 3b 0a 20 20 20 20 70 72 61 67 6d 61 20 61  56;.    pragma a
2f60: 75 78 2e 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  ux.cache_size;. 
2f70: 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 64 65     pragma aux.de
2f80: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
2f90: 3b 0a 20 20 7d 20 0a 7d 20 7b 34 35 36 20 34 35  ;.  } .} {456 45
2fa0: 36 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  6}.do_test pragm
2fb0: 61 2d 34 2e 34 20 7b 0a 20 20 65 78 65 63 73 71  a-4.4 {.  execsq
2fc0: 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 63  l {.    pragma c
2fd0: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70  ache_size;.    p
2fe0: 72 61 67 6d 61 20 64 65 66 61 75 6c 74 5f 63 61  ragma default_ca
2ff0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d  che_size;.  } .}
3000: 20 5b 6c 69 73 74 20 24 44 46 4c 54 5f 43 41 43   [list $DFLT_CAC
3010: 48 45 5f 53 5a 20 24 44 46 4c 54 5f 43 41 43 48  HE_SZ $DFLT_CACH
3020: 45 5f 53 5a 5d 0a 64 6f 5f 74 65 73 74 20 70 72  E_SZ].do_test pr
3030: 61 67 6d 61 2d 34 2e 35 20 7b 0a 20 20 65 78 65  agma-4.5 {.  exe
3040: 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 54 41 43  csql {.    DETAC
3050: 48 20 61 75 78 3b 0a 20 20 20 20 41 54 54 41 43  H aux;.    ATTAC
3060: 48 20 27 74 65 73 74 33 2e 64 62 27 20 41 53 20  H 'test3.db' AS 
3070: 61 75 78 3b 0a 20 20 20 20 70 72 61 67 6d 61 20  aux;.    pragma 
3080: 61 75 78 2e 63 61 63 68 65 5f 73 69 7a 65 3b 0a  aux.cache_size;.
3090: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 64      pragma aux.d
30a0: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
30b0: 65 3b 0a 20 20 7d 20 0a 7d 20 5b 6c 69 73 74 20  e;.  } .} [list 
30c0: 24 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a 20 24  $DFLT_CACHE_SZ $
30d0: 44 46 4c 54 5f 43 41 43 48 45 5f 53 5a 5d 0a 64  DFLT_CACHE_SZ].d
30e0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 34 2e  o_test pragma-4.
30f0: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  6 {.  execsql {.
3100: 20 20 20 20 44 45 54 41 43 48 20 61 75 78 3b 0a      DETACH aux;.
3110: 20 20 20 20 41 54 54 41 43 48 20 27 74 65 73 74      ATTACH 'test
3120: 32 2e 64 62 27 20 41 53 20 61 75 78 3b 0a 20 20  2.db' AS aux;.  
3130: 20 20 70 72 61 67 6d 61 20 61 75 78 2e 63 61 63    pragma aux.cac
3140: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72 61  he_size;.    pra
3150: 67 6d 61 20 61 75 78 2e 64 65 66 61 75 6c 74 5f  gma aux.default_
3160: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d 20  cache_size;.  } 
3170: 0a 7d 20 7b 34 35 36 20 34 35 36 7d 0a 7d 20 3b  .} {456 456}.} ;
3180: 23 20 69 66 63 61 70 61 62 6c 65 20 70 61 67 65  # ifcapable page
3190: 72 5f 70 72 61 67 6d 61 73 0a 0a 23 20 54 65 73  r_pragmas..# Tes
31a0: 74 20 74 68 61 74 20 6d 6f 64 69 66 79 69 6e 67  t that modifying
31b0: 20 74 68 65 20 73 79 6e 63 2d 6c 65 76 65 6c 20   the sync-level 
31c0: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
31d0: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69   a transaction i
31e0: 73 0a 23 20 64 69 73 61 6c 6c 6f 77 65 64 2e 0a  s.# disallowed..
31f0: 69 66 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f  ifcapable pager_
3200: 70 72 61 67 6d 61 73 20 7b 0a 64 6f 5f 74 65 73  pragmas {.do_tes
3210: 74 20 70 72 61 67 6d 61 2d 35 2e 30 20 7b 0a 20  t pragma-5.0 {. 
3220: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70   execsql {.    p
3230: 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e 6f 75  ragma synchronou
3240: 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32 7d 0a 64 6f  s;.  } .} {2}.do
3250: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 35 2e 31  _test pragma-5.1
3260: 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a   {.  catchsql {.
3270: 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 70      BEGIN;.    p
3280: 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e 6f 75  ragma synchronou
3290: 73 20 3d 20 4f 46 46 3b 0a 20 20 7d 20 0a 7d 20  s = OFF;.  } .} 
32a0: 7b 31 20 7b 53 61 66 65 74 79 20 6c 65 76 65 6c  {1 {Safety level
32b0: 20 6d 61 79 20 6e 6f 74 20 62 65 20 63 68 61 6e   may not be chan
32c0: 67 65 64 20 69 6e 73 69 64 65 20 61 20 74 72 61  ged inside a tra
32d0: 6e 73 61 63 74 69 6f 6e 7d 7d 0a 64 6f 5f 74 65  nsaction}}.do_te
32e0: 73 74 20 70 72 61 67 6d 61 2d 35 2e 32 20 7b 0a  st pragma-5.2 {.
32f0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
3300: 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e 6f  pragma synchrono
3310: 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32 7d 0a 63  us;.  } .} {2}.c
3320: 61 74 63 68 73 71 6c 20 7b 43 4f 4d 4d 49 54 3b  atchsql {COMMIT;
3330: 7d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62 6c 65  }.} ;# ifcapable
3340: 20 70 61 67 65 72 5f 70 72 61 67 6d 61 73 0a 0a   pager_pragmas..
3350: 23 20 54 65 73 74 20 73 63 68 65 6d 61 2d 71 75  # Test schema-qu
3360: 65 72 79 20 70 72 61 67 6d 61 73 0a 23 0a 69 66  ery pragmas.#.if
3370: 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61 5f 70  capable schema_p
3380: 72 61 67 6d 61 73 20 7b 0a 69 66 63 61 70 61 62  ragmas {.ifcapab
3390: 6c 65 20 74 65 6d 70 64 62 26 26 61 74 74 61 63  le tempdb&&attac
33a0: 68 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  h {.  do_test pr
33b0: 61 67 6d 61 2d 36 2e 31 20 7b 0a 20 20 20 20 73  agma-6.1 {.    s
33c0: 65 74 20 72 65 73 20 7b 7d 0a 20 20 20 20 65 78  et res {}.    ex
33d0: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 2a 20  ecsql {SELECT * 
33e0: 46 52 4f 4d 20 73 71 6c 69 74 65 5f 74 65 6d 70  FROM sqlite_temp
33f0: 5f 6d 61 73 74 65 72 7d 0a 20 20 20 20 66 6f 72  _master}.    for
3400: 65 61 63 68 20 7b 69 64 78 20 6e 61 6d 65 20 66  each {idx name f
3410: 69 6c 65 7d 20 5b 65 78 65 63 73 71 6c 20 7b 70  ile} [execsql {p
3420: 72 61 67 6d 61 20 64 61 74 61 62 61 73 65 5f 6c  ragma database_l
3430: 69 73 74 7d 5d 20 7b 0a 20 20 20 20 20 20 6c 61  ist}] {.      la
3440: 70 70 65 6e 64 20 72 65 73 20 24 69 64 78 20 24  ppend res $idx $
3450: 6e 61 6d 65 0a 20 20 20 20 7d 0a 20 20 20 20 73  name.    }.    s
3460: 65 74 20 72 65 73 0a 20 20 7d 20 7b 30 20 6d 61  et res.  } {0 ma
3470: 69 6e 20 31 20 74 65 6d 70 20 32 20 61 75 78 7d  in 1 temp 2 aux}
3480: 0a 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  .}.do_test pragm
3490: 61 2d 36 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  a-6.2 {.  execsq
34a0: 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 74  l {.    pragma t
34b0: 61 62 6c 65 5f 69 6e 66 6f 28 74 32 29 0a 20 20  able_info(t2).  
34c0: 7d 0a 7d 20 7b 30 20 61 20 7b 7d 20 30 20 7b 7d  }.} {0 a {} 0 {}
34d0: 20 30 20 31 20 62 20 7b 7d 20 30 20 7b 7d 20 30   0 1 b {} 0 {} 0
34e0: 20 32 20 63 20 7b 7d 20 30 20 7b 7d 20 30 7d 0a   2 c {} 0 {} 0}.
34f0: 64 62 20 6e 75 6c 6c 76 61 6c 75 65 20 3c 3c 4e  db nullvalue <<N
3500: 55 4c 4c 3e 3e 0a 64 6f 5f 74 65 73 74 20 70 72  ULL>>.do_test pr
3510: 61 67 6d 61 2d 36 2e 32 2e 32 20 7b 0a 20 20 65  agma-6.2.2 {.  e
3520: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45  xecsql {.    CRE
3530: 41 54 45 20 54 41 42 4c 45 20 74 35 28 0a 20 20  ATE TABLE t5(.  
3540: 20 20 20 20 61 20 54 45 58 54 20 44 45 46 41 55      a TEXT DEFAU
3550: 4c 54 20 43 55 52 52 45 4e 54 5f 54 49 4d 45 53  LT CURRENT_TIMES
3560: 54 41 4d 50 2c 20 0a 20 20 20 20 20 20 62 20 44  TAMP, .      b D
3570: 45 46 41 55 4c 54 20 28 35 2b 33 29 2c 0a 20 20  EFAULT (5+3),.  
3580: 20 20 20 20 63 20 54 45 58 54 2c 0a 20 20 20 20      c TEXT,.    
3590: 20 20 64 20 49 4e 54 45 47 45 52 20 44 45 46 41    d INTEGER DEFA
35a0: 55 4c 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20  ULT NULL,.      
35b0: 65 20 54 45 58 54 20 44 45 46 41 55 4c 54 20 27  e TEXT DEFAULT '
35c0: 27 0a 20 20 20 20 29 3b 0a 20 20 20 20 50 52 41  '.    );.    PRA
35d0: 47 4d 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28 74  GMA table_info(t
35e0: 35 29 3b 0a 20 20 7d 0a 7d 20 7b 30 20 61 20 54  5);.  }.} {0 a T
35f0: 45 58 54 20 30 20 43 55 52 52 45 4e 54 5f 54 49  EXT 0 CURRENT_TI
3600: 4d 45 53 54 41 4d 50 20 30 20 31 20 62 20 7b 7d  MESTAMP 0 1 b {}
3610: 20 30 20 35 2b 33 20 30 20 32 20 63 20 54 45 58   0 5+3 0 2 c TEX
3620: 54 20 30 20 3c 3c 4e 55 4c 4c 3e 3e 20 30 20 33  T 0 <<NULL>> 0 3
3630: 20 64 20 49 4e 54 45 47 45 52 20 30 20 4e 55 4c   d INTEGER 0 NUL
3640: 4c 20 30 20 34 20 65 20 54 45 58 54 20 30 20 27  L 0 4 e TEXT 0 '
3650: 27 20 30 7d 0a 64 62 20 6e 75 6c 6c 76 61 6c 75  ' 0}.db nullvalu
3660: 65 20 7b 7d 0a 69 66 63 61 70 61 62 6c 65 20 7b  e {}.ifcapable {
3670: 66 6f 72 65 69 67 6e 6b 65 79 7d 20 7b 0a 20 20  foreignkey} {.  
3680: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 36  do_test pragma-6
3690: 2e 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .3 {.    execsql
36a0: 20 7b 0a 20 20 20 20 20 20 43 52 45 41 54 45 20   {.      CREATE 
36b0: 54 41 42 4c 45 20 74 33 28 61 20 69 6e 74 20 72  TABLE t3(a int r
36c0: 65 66 65 72 65 6e 63 65 73 20 74 32 28 62 29 2c  eferences t2(b),
36d0: 20 62 20 55 4e 49 51 55 45 29 3b 0a 20 20 20 20   b UNIQUE);.    
36e0: 20 20 70 72 61 67 6d 61 20 66 6f 72 65 69 67 6e    pragma foreign
36f0: 5f 6b 65 79 5f 6c 69 73 74 28 74 33 29 3b 0a 20  _key_list(t3);. 
3700: 20 20 20 7d 0a 20 20 7d 20 7b 30 20 30 20 74 32     }.  } {0 0 t2
3710: 20 61 20 62 20 52 45 53 54 52 49 43 54 20 52 45   a b RESTRICT RE
3720: 53 54 52 49 43 54 20 4e 4f 4e 45 7d 0a 20 20 64  STRICT NONE}.  d
3730: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 36 2e  o_test pragma-6.
3740: 34 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  4 {.    execsql 
3750: 7b 0a 20 20 20 20 20 20 70 72 61 67 6d 61 20 69  {.      pragma i
3760: 6e 64 65 78 5f 6c 69 73 74 28 74 33 29 3b 0a 20  ndex_list(t3);. 
3770: 20 20 20 7d 0a 20 20 7d 20 7b 30 20 73 71 6c 69     }.  } {0 sqli
3780: 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 33 5f  te_autoindex_t3_
3790: 31 20 31 7d 0a 7d 0a 69 66 63 61 70 61 62 6c 65  1 1}.}.ifcapable
37a0: 20 7b 21 66 6f 72 65 69 67 6e 6b 65 79 7d 20 7b   {!foreignkey} {
37b0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 43 52 45 41  .  execsql {CREA
37c0: 54 45 20 54 41 42 4c 45 20 74 33 28 61 2c 62 20  TE TABLE t3(a,b 
37d0: 55 4e 49 51 55 45 29 7d 0a 7d 0a 64 6f 5f 74 65  UNIQUE)}.}.do_te
37e0: 73 74 20 70 72 61 67 6d 61 2d 36 2e 35 20 7b 0a  st pragma-6.5 {.
37f0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
3800: 43 52 45 41 54 45 20 49 4e 44 45 58 20 74 33 69  CREATE INDEX t3i
3810: 31 20 4f 4e 20 74 33 28 61 2c 62 29 3b 0a 20 20  1 ON t3(a,b);.  
3820: 20 20 70 72 61 67 6d 61 20 69 6e 64 65 78 5f 69    pragma index_i
3830: 6e 66 6f 28 74 33 69 31 29 3b 0a 20 20 7d 0a 7d  nfo(t3i1);.  }.}
3840: 20 7b 30 20 30 20 61 20 31 20 31 20 62 7d 0a 0a   {0 0 a 1 1 b}..
3850: 69 66 63 61 70 61 62 6c 65 20 74 65 6d 70 64 62  ifcapable tempdb
3860: 20 7b 0a 20 20 23 20 54 65 73 74 20 66 6f 72 20   {.  # Test for 
3870: 74 69 63 6b 65 74 20 23 33 33 32 30 2e 20 57 68  ticket #3320. Wh
3880: 65 6e 20 61 20 74 65 6d 70 20 74 61 62 6c 65 20  en a temp table 
3890: 6f 66 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65  of the same name
38a0: 20 65 78 69 73 74 73 2c 20 6d 61 6b 65 0a 20 20   exists, make.  
38b0: 23 20 73 75 72 65 20 74 68 65 20 73 63 68 65 6d  # sure the schem
38c0: 61 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 74 61  a of the main ta
38d0: 62 6c 65 20 63 61 6e 20 73 74 69 6c 6c 20 62 65  ble can still be
38e0: 20 71 75 65 72 69 65 64 20 75 73 69 6e 67 20 0a   queried using .
38f0: 20 20 23 20 22 70 72 61 67 6d 61 20 74 61 62 6c    # "pragma tabl
3900: 65 5f 69 6e 66 6f 22 3a 0a 20 20 64 6f 5f 74 65  e_info":.  do_te
3910: 73 74 20 70 72 61 67 6d 61 2d 36 2e 36 2e 31 20  st pragma-6.6.1 
3920: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a  {.    execsql {.
3930: 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41 42        CREATE TAB
3940: 4c 45 20 74 72 69 61 6c 28 63 6f 6c 5f 6d 61 69  LE trial(col_mai
3950: 6e 29 3b 0a 20 20 20 20 20 20 43 52 45 41 54 45  n);.      CREATE
3960: 20 54 45 4d 50 20 54 41 42 4c 45 20 74 72 69 61   TEMP TABLE tria
3970: 6c 28 63 6f 6c 5f 74 65 6d 70 29 3b 0a 20 20 20  l(col_temp);.   
3980: 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74   }.  } {}.  do_t
3990: 65 73 74 20 70 72 61 67 6d 61 2d 36 2e 36 2e 32  est pragma-6.6.2
39a0: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
39b0: 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 74 61  .      PRAGMA ta
39c0: 62 6c 65 5f 69 6e 66 6f 28 74 72 69 61 6c 29 3b  ble_info(trial);
39d0: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 30 20 63 6f  .    }.  } {0 co
39e0: 6c 5f 74 65 6d 70 20 7b 7d 20 30 20 7b 7d 20 30  l_temp {} 0 {} 0
39f0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
3a00: 6d 61 2d 36 2e 36 2e 33 20 7b 0a 20 20 20 20 65  ma-6.6.3 {.    e
3a10: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50  xecsql {.      P
3a20: 52 41 47 4d 41 20 74 65 6d 70 2e 74 61 62 6c 65  RAGMA temp.table
3a30: 5f 69 6e 66 6f 28 74 72 69 61 6c 29 3b 0a 20 20  _info(trial);.  
3a40: 20 20 7d 0a 20 20 7d 20 7b 30 20 63 6f 6c 5f 74    }.  } {0 col_t
3a50: 65 6d 70 20 7b 7d 20 30 20 7b 7d 20 30 7d 0a 20  emp {} 0 {} 0}. 
3a60: 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d   do_test pragma-
3a70: 36 2e 36 2e 34 20 7b 0a 20 20 20 20 65 78 65 63  6.6.4 {.    exec
3a80: 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52 41 47  sql {.      PRAG
3a90: 4d 41 20 6d 61 69 6e 2e 74 61 62 6c 65 5f 69 6e  MA main.table_in
3aa0: 66 6f 28 74 72 69 61 6c 29 3b 0a 20 20 20 20 7d  fo(trial);.    }
3ab0: 0a 20 20 7d 20 7b 30 20 63 6f 6c 5f 6d 61 69 6e  .  } {0 col_main
3ac0: 20 7b 7d 20 30 20 7b 7d 20 30 7d 0a 7d 0a 0a 62   {} 0 {} 0}.}..b
3ad0: 72 65 61 6b 70 6f 69 6e 74 0a 64 6f 5f 74 65 73  reakpoint.do_tes
3ae0: 74 20 70 72 61 67 6d 61 2d 36 2e 37 20 7b 0a 20  t pragma-6.7 {. 
3af0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43   execsql {.    C
3b00: 52 45 41 54 45 20 54 41 42 4c 45 20 74 65 73 74  REATE TABLE test
3b10: 5f 74 61 62 6c 65 28 0a 20 20 20 20 20 20 6f 6e  _table(.      on
3b20: 65 20 49 4e 54 20 4e 4f 54 20 4e 55 4c 4c 20 44  e INT NOT NULL D
3b30: 45 46 41 55 4c 54 20 2d 31 2c 20 0a 20 20 20 20  EFAULT -1, .    
3b40: 20 20 74 77 6f 20 74 65 78 74 2c 0a 20 20 20 20    two text,.    
3b50: 20 20 74 68 72 65 65 20 56 41 52 43 48 41 52 28    three VARCHAR(
3b60: 34 35 2c 20 36 35 29 20 44 45 46 41 55 4c 54 20  45, 65) DEFAULT 
3b70: 27 61 62 63 64 65 27 2c 0a 20 20 20 20 20 20 66  'abcde',.      f
3b80: 6f 75 72 20 52 45 41 4c 20 44 45 46 41 55 4c 54  our REAL DEFAULT
3b90: 20 58 27 61 62 63 64 65 66 27 2c 0a 20 20 20 20   X'abcdef',.    
3ba0: 20 20 66 69 76 65 20 44 45 46 41 55 4c 54 20 43    five DEFAULT C
3bb0: 55 52 52 45 4e 54 5f 54 49 4d 45 0a 20 20 20 20  URRENT_TIME.    
3bc0: 29 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 61  );.    PRAGMA ta
3bd0: 62 6c 65 5f 69 6e 66 6f 28 74 65 73 74 5f 74 61  ble_info(test_ta
3be0: 62 6c 65 29 3b 0a 20 20 7d 0a 7d 20 5b 63 6f 6e  ble);.  }.} [con
3bf0: 63 61 74 20 5c 0a 20 20 7b 30 20 6f 6e 65 20 49  cat \.  {0 one I
3c00: 4e 54 20 31 20 2d 31 20 30 7d 20 5c 0a 20 20 7b  NT 1 -1 0} \.  {
3c10: 31 20 74 77 6f 20 74 65 78 74 20 30 20 7b 7d 20  1 two text 0 {} 
3c20: 30 7d 20 5c 0a 20 20 7b 32 20 74 68 72 65 65 20  0} \.  {2 three 
3c30: 7b 56 41 52 43 48 41 52 28 34 35 2c 20 36 35 29  {VARCHAR(45, 65)
3c40: 7d 20 30 20 27 61 62 63 64 65 27 20 30 7d 20 5c  } 0 'abcde' 0} \
3c50: 0a 20 20 7b 33 20 66 6f 75 72 20 52 45 41 4c 20  .  {3 four REAL 
3c60: 30 20 58 27 61 62 63 64 65 66 27 20 30 7d 20 5c  0 X'abcdef' 0} \
3c70: 0a 20 20 7b 34 20 66 69 76 65 20 7b 7d 20 30 20  .  {4 five {} 0 
3c80: 43 55 52 52 45 4e 54 5f 54 49 4d 45 20 30 7d 20  CURRENT_TIME 0} 
3c90: 5c 0a 5d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62  \.].} ;# ifcapab
3ca0: 6c 65 20 73 63 68 65 6d 61 5f 70 72 61 67 6d 61  le schema_pragma
3cb0: 73 0a 23 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75  s.# Miscellaneou
3cc0: 73 20 74 65 73 74 73 0a 23 0a 69 66 63 61 70 61  s tests.#.ifcapa
3cd0: 62 6c 65 20 73 63 68 65 6d 61 5f 70 72 61 67 6d  ble schema_pragm
3ce0: 61 73 20 7b 0a 64 6f 5f 74 65 73 74 20 70 72 61  as {.do_test pra
3cf0: 67 6d 61 2d 37 2e 31 20 7b 0a 20 20 23 20 4d 61  gma-7.1 {.  # Ma
3d00: 6b 65 20 73 75 72 65 20 61 20 70 72 61 67 6d 61  ke sure a pragma
3d10: 20 6b 6e 6f 77 73 20 74 6f 20 72 65 61 64 20 74   knows to read t
3d20: 68 65 20 73 63 68 65 6d 61 20 69 66 20 69 74 20  he schema if it 
3d30: 6e 65 65 64 73 20 74 6f 0a 20 20 64 62 20 63 6c  needs to.  db cl
3d40: 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64 62  ose.  sqlite3 db
3d50: 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73   test.db.  execs
3d60: 71 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20  ql {.    pragma 
3d70: 69 6e 64 65 78 5f 6c 69 73 74 28 74 33 29 3b 0a  index_list(t3);.
3d80: 20 20 7d 0a 7d 20 7b 30 20 74 33 69 31 20 30 20    }.} {0 t3i1 0 
3d90: 31 20 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64  1 sqlite_autoind
3da0: 65 78 5f 74 33 5f 31 20 31 7d 0a 7d 20 3b 23 20  ex_t3_1 1}.} ;# 
3db0: 69 66 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61  ifcapable schema
3dc0: 5f 70 72 61 67 6d 61 73 0a 69 66 63 61 70 61 62  _pragmas.ifcapab
3dd0: 6c 65 20 7b 75 74 66 31 36 7d 20 7b 0a 20 20 64  le {utf16} {.  d
3de0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 37 2e  o_test pragma-7.
3df0: 32 20 7b 0a 20 20 20 20 64 62 20 63 6c 6f 73 65  2 {.    db close
3e00: 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64 62 20  .    sqlite3 db 
3e10: 74 65 73 74 2e 64 62 0a 20 20 20 20 63 61 74 63  test.db.    catc
3e20: 68 73 71 6c 20 7b 0a 20 20 20 20 20 20 70 72 61  hsql {.      pra
3e30: 67 6d 61 20 65 6e 63 6f 64 69 6e 67 3d 62 6f 67  gma encoding=bog
3e40: 75 73 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31  us;.    }.  } {1
3e50: 20 7b 75 6e 73 75 70 70 6f 72 74 65 64 20 65 6e   {unsupported en
3e60: 63 6f 64 69 6e 67 3a 20 62 6f 67 75 73 7d 7d 0a  coding: bogus}}.
3e70: 7d 0a 69 66 63 61 70 61 62 6c 65 20 74 65 6d 70  }.ifcapable temp
3e80: 64 62 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70  db {.  do_test p
3e90: 72 61 67 6d 61 2d 37 2e 33 20 7b 0a 20 20 20 20  ragma-7.3 {.    
3ea0: 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 73 71 6c  db close.    sql
3eb0: 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a  ite3 db test.db.
3ec0: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
3ed0: 20 20 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 5f      pragma lock_
3ee0: 73 74 61 74 75 73 3b 0a 20 20 20 20 7d 0a 20 20  status;.    }.  
3ef0: 7d 20 7b 6d 61 69 6e 20 75 6e 6c 6f 63 6b 65 64  } {main unlocked
3f00: 20 74 65 6d 70 20 63 6c 6f 73 65 64 7d 0a 7d 20   temp closed}.} 
3f10: 65 6c 73 65 20 7b 0a 20 20 64 6f 5f 74 65 73 74  else {.  do_test
3f20: 20 70 72 61 67 6d 61 2d 37 2e 33 20 7b 0a 20 20   pragma-7.3 {.  
3f30: 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 73    db close.    s
3f40: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
3f50: 62 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a  b.    execsql {.
3f60: 20 20 20 20 20 20 70 72 61 67 6d 61 20 6c 6f 63        pragma loc
3f70: 6b 5f 73 74 61 74 75 73 3b 0a 20 20 20 20 7d 0a  k_status;.    }.
3f80: 20 20 7d 20 7b 6d 61 69 6e 20 75 6e 6c 6f 63 6b    } {main unlock
3f90: 65 64 7d 0a 7d 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d  ed}.}...#-------
3fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
3fe0: 23 20 54 65 73 74 20 63 61 73 65 73 20 70 72 61  # Test cases pra
3ff0: 67 6d 61 2d 38 2e 2a 20 74 65 73 74 20 74 68 65  gma-8.* test the
4000: 20 22 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f   "PRAGMA schema_
4010: 76 65 72 73 69 6f 6e 22 20 61 6e 64 20 22 50 52  version" and "PR
4020: 41 47 4d 41 0a 23 20 75 73 65 72 5f 76 65 72 73  AGMA.# user_vers
4030: 69 6f 6e 22 20 73 74 61 74 65 6d 65 6e 74 73 2e  ion" statements.
4040: 0a 23 0a 23 20 70 72 61 67 6d 61 2d 38 2e 31 3a  .#.# pragma-8.1:
4050: 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f 76   PRAGMA schema_v
4060: 65 72 73 69 6f 6e 0a 23 20 70 72 61 67 6d 61 2d  ersion.# pragma-
4070: 38 2e 32 3a 20 50 52 41 47 4d 41 20 75 73 65 72  8.2: PRAGMA user
4080: 5f 76 65 72 73 69 6f 6e 0a 23 0a 0a 69 66 63 61  _version.#..ifca
4090: 70 61 62 6c 65 20 73 63 68 65 6d 61 5f 76 65 72  pable schema_ver
40a0: 73 69 6f 6e 20 7b 0a 0a 23 20 46 69 72 73 74 20  sion {..# First 
40b0: 63 68 65 63 6b 20 74 68 61 74 20 77 65 20 63 61  check that we ca
40c0: 6e 20 73 65 74 20 74 68 65 20 73 63 68 65 6d 61  n set the schema
40d0: 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 74 68 65   version and the
40e0: 6e 20 72 65 74 72 69 65 76 65 20 74 68 65 0a 23  n retrieve the.#
40f0: 20 73 61 6d 65 20 76 61 6c 75 65 2e 0a 64 6f 5f   same value..do_
4100: 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e  test pragma-8.1.
4110: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
4120: 20 20 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d      PRAGMA schem
4130: 61 5f 76 65 72 73 69 6f 6e 20 3d 20 31 30 35 3b  a_version = 105;
4140: 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73  .  }.} {}.do_tes
4150: 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 32 20 7b  t pragma-8.1.2 {
4160: 0a 20 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20  .  execsql2 {.  
4170: 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f    PRAGMA schema_
4180: 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20 7b  version;.  }.} {
4190: 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 20 31  schema_version 1
41a0: 30 35 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  05}.do_test prag
41b0: 6d 61 2d 38 2e 31 2e 33 20 7b 0a 20 20 65 78 65  ma-8.1.3 {.  exe
41c0: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
41d0: 41 20 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e  A schema_version
41e0: 20 3d 20 31 30 36 3b 0a 20 20 7d 0a 7d 20 7b 7d   = 106;.  }.} {}
41f0: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
4200: 38 2e 31 2e 34 20 7b 0a 20 20 65 78 65 63 73 71  8.1.4 {.  execsq
4210: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  l {.    PRAGMA s
4220: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20  chema_version;. 
4230: 20 7d 0a 7d 20 31 30 36 0a 0a 23 20 43 68 65 63   }.} 106..# Chec
4240: 6b 20 74 68 61 74 20 63 72 65 61 74 69 6e 67 20  k that creating 
4250: 61 20 74 61 62 6c 65 20 6d 6f 64 69 66 69 65 73  a table modifies
4260: 20 74 68 65 20 73 63 68 65 6d 61 2d 76 65 72 73   the schema-vers
4270: 69 6f 6e 20 28 74 68 69 73 20 69 73 20 72 65 61  ion (this is rea
4280: 6c 6c 79 0a 23 20 74 6f 20 76 65 72 69 66 79 20  lly.# to verify 
4290: 74 68 61 74 20 74 68 65 20 76 61 6c 75 65 20 62  that the value b
42a0: 65 69 6e 67 20 72 65 61 64 20 69 73 20 69 6e 20  eing read is in 
42b0: 66 61 63 74 20 74 68 65 20 73 63 68 65 6d 61 20  fact the schema 
42c0: 76 65 72 73 69 6f 6e 29 2e 0a 64 6f 5f 74 65 73  version)..do_tes
42d0: 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 35 20 7b  t pragma-8.1.5 {
42e0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
42f0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 34   CREATE TABLE t4
4300: 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 49  (a, b, c);.    I
4310: 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 20 56 41  NSERT INTO t4 VA
4320: 4c 55 45 53 28 31 2c 20 32 2c 20 33 29 3b 0a 20  LUES(1, 2, 3);. 
4330: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
4340: 20 74 34 3b 0a 20 20 7d 0a 7d 20 7b 31 20 32 20   t4;.  }.} {1 2 
4350: 33 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  3}.do_test pragm
4360: 61 2d 38 2e 31 2e 36 20 7b 0a 20 20 65 78 65 63  a-8.1.6 {.  exec
4370: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
4380: 20 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 3b   schema_version;
4390: 0a 20 20 7d 0a 7d 20 31 30 37 0a 0a 23 20 4e 6f  .  }.} 107..# No
43a0: 77 20 6f 70 65 6e 20 61 20 73 65 63 6f 6e 64 20  w open a second 
43b0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68  connection to th
43c0: 65 20 64 61 74 61 62 61 73 65 2e 20 45 6e 73 75  e database. Ensu
43d0: 72 65 20 74 68 61 74 20 63 68 61 6e 67 69 6e 67  re that changing
43e0: 20 74 68 65 0a 23 20 73 63 68 65 6d 61 2d 76 65   the.# schema-ve
43f0: 72 73 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20  rsion using the 
4400: 66 69 72 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e  first connection
4410: 20 66 6f 72 63 65 73 20 74 68 65 20 73 65 63 6f   forces the seco
4420: 6e 64 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 23 20  nd connection.# 
4430: 74 6f 20 72 65 6c 6f 61 64 20 74 68 65 20 73 63  to reload the sc
4440: 68 65 6d 61 2e 20 54 68 69 73 20 68 61 73 20 74  hema. This has t
4450: 6f 20 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20  o be done using 
4460: 74 68 65 20 43 2d 41 50 49 20 74 65 73 74 20 66  the C-API test f
4470: 75 6e 63 74 69 6f 6e 73 2c 0a 23 20 62 65 63 61  unctions,.# beca
4480: 75 73 65 20 74 68 65 20 54 43 4c 20 41 50 49 20  use the TCL API 
4490: 61 63 63 6f 75 6e 74 73 20 66 6f 72 20 53 43 48  accounts for SCH
44a0: 45 4d 41 5f 45 52 52 4f 52 20 61 6e 64 20 72 65  EMA_ERROR and re
44b0: 74 72 69 65 73 20 74 68 65 20 71 75 65 72 79 2e  tries the query.
44c0: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
44d0: 38 2e 31 2e 37 20 7b 0a 20 20 73 71 6c 69 74 65  8.1.7 {.  sqlite
44e0: 33 20 64 62 32 20 74 65 73 74 2e 64 62 3b 20 73  3 db2 test.db; s
44f0: 65 74 20 3a 3a 44 42 32 20 5b 73 71 6c 69 74 65  et ::DB2 [sqlite
4500: 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69  3_connection_poi
4510: 6e 74 65 72 20 64 62 32 5d 0a 20 20 65 78 65 63  nter db2].  exec
4520: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
4530: 20 2a 20 46 52 4f 4d 20 74 34 3b 0a 20 20 7d 20   * FROM t4;.  } 
4540: 64 62 32 0a 7d 20 7b 31 20 32 20 33 7d 0a 64 6f  db2.} {1 2 3}.do
4550: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31  _test pragma-8.1
4560: 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .8 {.  execsql {
4570: 0a 20 20 20 20 50 52 41 47 4d 41 20 73 63 68 65  .    PRAGMA sche
4580: 6d 61 5f 76 65 72 73 69 6f 6e 20 3d 20 31 30 38  ma_version = 108
4590: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65  ;.  }.} {}.do_te
45a0: 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 39 20  st pragma-8.1.9 
45b0: 7b 0a 20 20 73 65 74 20 3a 3a 53 54 4d 54 20 5b  {.  set ::STMT [
45c0: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20  sqlite3_prepare 
45d0: 24 3a 3a 44 42 32 20 22 53 45 4c 45 43 54 20 2a  $::DB2 "SELECT *
45e0: 20 46 52 4f 4d 20 74 34 22 20 2d 31 20 44 55 4d   FROM t4" -1 DUM
45f0: 4d 59 5d 0a 20 20 73 71 6c 69 74 65 33 5f 73 74  MY].  sqlite3_st
4600: 65 70 20 24 3a 3a 53 54 4d 54 0a 7d 20 53 51 4c  ep $::STMT.} SQL
4610: 49 54 45 5f 45 52 52 4f 52 0a 64 6f 5f 74 65 73  ITE_ERROR.do_tes
4620: 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31 30 20  t pragma-8.1.10 
4630: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66 69 6e 61  {.  sqlite3_fina
4640: 6c 69 7a 65 20 24 3a 3a 53 54 4d 54 0a 7d 20 53  lize $::STMT.} S
4650: 51 4c 49 54 45 5f 53 43 48 45 4d 41 0a 0a 23 20  QLITE_SCHEMA..# 
4660: 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20 73 63  Make sure the sc
4670: 68 65 6d 61 2d 76 65 72 73 69 6f 6e 20 63 61 6e  hema-version can
4680: 20 62 65 20 6d 61 6e 69 70 75 6c 61 74 65 64 20   be manipulated 
4690: 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  in an attached d
46a0: 61 74 61 62 61 73 65 2e 0a 66 69 6c 65 20 64 65  atabase..file de
46b0: 6c 65 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74  lete -force test
46c0: 32 2e 64 62 0a 66 69 6c 65 20 64 65 6c 65 74 65  2.db.file delete
46d0: 20 2d 66 6f 72 63 65 20 74 65 73 74 32 2e 64 62   -force test2.db
46e0: 2d 6a 6f 75 72 6e 61 6c 0a 69 66 63 61 70 61 62  -journal.ifcapab
46f0: 6c 65 20 61 74 74 61 63 68 20 7b 0a 20 20 64 6f  le attach {.  do
4700: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31  _test pragma-8.1
4710: 2e 31 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71  .11 {.    execsq
4720: 6c 20 7b 0a 20 20 20 20 20 20 41 54 54 41 43 48  l {.      ATTACH
4730: 20 27 74 65 73 74 32 2e 64 62 27 20 41 53 20 61   'test2.db' AS a
4740: 75 78 3b 0a 20 20 20 20 20 20 43 52 45 41 54 45  ux;.      CREATE
4750: 20 54 41 42 4c 45 20 61 75 78 2e 74 31 28 61 2c   TABLE aux.t1(a,
4760: 20 62 2c 20 63 29 3b 0a 20 20 20 20 20 20 50 52   b, c);.      PR
4770: 41 47 4d 41 20 61 75 78 2e 73 63 68 65 6d 61 5f  AGMA aux.schema_
4780: 76 65 72 73 69 6f 6e 20 3d 20 32 30 35 3b 0a 20  version = 205;. 
4790: 20 20 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f     }.  } {}.  do
47a0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31  _test pragma-8.1
47b0: 2e 31 32 20 7b 0a 20 20 20 20 65 78 65 63 73 71  .12 {.    execsq
47c0: 6c 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41  l {.      PRAGMA
47d0: 20 61 75 78 2e 73 63 68 65 6d 61 5f 76 65 72 73   aux.schema_vers
47e0: 69 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 32  ion;.    }.  } 2
47f0: 30 35 0a 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  05.}.do_test pra
4800: 67 6d 61 2d 38 2e 31 2e 31 33 20 7b 0a 20 20 65  gma-8.1.13 {.  e
4810: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
4820: 47 4d 41 20 73 63 68 65 6d 61 5f 76 65 72 73 69  GMA schema_versi
4830: 6f 6e 3b 0a 20 20 7d 0a 7d 20 31 30 38 0a 0a 23  on;.  }.} 108..#
4840: 20 41 6e 64 20 63 68 65 63 6b 20 74 68 61 74 20   And check that 
4850: 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 73 63  modifying the sc
4860: 68 65 6d 61 2d 76 65 72 73 69 6f 6e 20 69 6e 20  hema-version in 
4870: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
4880: 62 61 73 65 0a 23 20 66 6f 72 63 65 73 20 74 68  base.# forces th
4890: 65 20 73 65 63 6f 6e 64 20 63 6f 6e 6e 65 63 74  e second connect
48a0: 69 6f 6e 20 74 6f 20 72 65 6c 6f 61 64 20 74 68  ion to reload th
48b0: 65 20 73 63 68 65 6d 61 2e 0a 69 66 63 61 70 61  e schema..ifcapa
48c0: 62 6c 65 20 61 74 74 61 63 68 20 7b 0a 20 20 64  ble attach {.  d
48d0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
48e0: 31 2e 31 34 20 7b 0a 20 20 20 20 73 71 6c 69 74  1.14 {.    sqlit
48f0: 65 33 20 64 62 32 20 74 65 73 74 2e 64 62 3b 20  e3 db2 test.db; 
4900: 73 65 74 20 3a 3a 44 42 32 20 5b 73 71 6c 69 74  set ::DB2 [sqlit
4910: 65 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f  e3_connection_po
4920: 69 6e 74 65 72 20 64 62 32 5d 0a 20 20 20 20 65  inter db2].    e
4930: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 41  xecsql {.      A
4940: 54 54 41 43 48 20 27 74 65 73 74 32 2e 64 62 27  TTACH 'test2.db'
4950: 20 41 53 20 61 75 78 3b 0a 20 20 20 20 20 20 53   AS aux;.      S
4960: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 61 75 78  ELECT * FROM aux
4970: 2e 74 31 3b 0a 20 20 20 20 7d 20 64 62 32 0a 20  .t1;.    } db2. 
4980: 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74 65 73 74 20   } {}.  do_test 
4990: 70 72 61 67 6d 61 2d 38 2e 31 2e 31 35 20 7b 0a  pragma-8.1.15 {.
49a0: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
49b0: 20 20 20 20 50 52 41 47 4d 41 20 61 75 78 2e 73      PRAGMA aux.s
49c0: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 20 3d 20  chema_version = 
49d0: 32 30 36 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  206;.    }.  } {
49e0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
49f0: 6d 61 2d 38 2e 31 2e 31 36 20 7b 0a 20 20 20 20  ma-8.1.16 {.    
4a00: 73 65 74 20 3a 3a 53 54 4d 54 20 5b 73 71 6c 69  set ::STMT [sqli
4a10: 74 65 33 5f 70 72 65 70 61 72 65 20 24 3a 3a 44  te3_prepare $::D
4a20: 42 32 20 22 53 45 4c 45 43 54 20 2a 20 46 52 4f  B2 "SELECT * FRO
4a30: 4d 20 61 75 78 2e 74 31 22 20 2d 31 20 44 55 4d  M aux.t1" -1 DUM
4a40: 4d 59 5d 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  MY].    sqlite3_
4a50: 73 74 65 70 20 24 3a 3a 53 54 4d 54 0a 20 20 7d  step $::STMT.  }
4a60: 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 0a 20 20   SQLITE_ERROR.  
4a70: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38  do_test pragma-8
4a80: 2e 31 2e 31 37 20 7b 0a 20 20 20 20 73 71 6c 69  .1.17 {.    sqli
4a90: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24 3a 3a  te3_finalize $::
4aa0: 53 54 4d 54 0a 20 20 7d 20 53 51 4c 49 54 45 5f  STMT.  } SQLITE_
4ab0: 53 43 48 45 4d 41 0a 20 20 64 6f 5f 74 65 73 74  SCHEMA.  do_test
4ac0: 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31 38 20 7b   pragma-8.1.18 {
4ad0: 0a 20 20 20 20 64 62 32 20 63 6c 6f 73 65 0a 20  .    db2 close. 
4ae0: 20 7d 20 7b 7d 0a 7d 0a 0a 23 20 4e 6f 77 20 74   } {}.}..# Now t
4af0: 65 73 74 20 74 68 61 74 20 74 68 65 20 75 73 65  est that the use
4b00: 72 2d 76 65 72 73 69 6f 6e 20 63 61 6e 20 62 65  r-version can be
4b10: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 74 65   read and writte
4b20: 6e 20 28 61 6e 64 20 74 68 61 74 20 77 65 20 61  n (and that we a
4b30: 72 65 6e 27 74 0a 23 20 61 63 63 69 64 65 6e 74  ren't.# accident
4b40: 61 6c 6c 79 20 6d 61 6e 69 70 75 6c 61 74 69 6e  ally manipulatin
4b50: 67 20 74 68 65 20 73 63 68 65 6d 61 2d 76 65 72  g the schema-ver
4b60: 73 69 6f 6e 20 69 6e 73 74 65 61 64 29 2e 0a 64  sion instead)..d
4b70: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
4b80: 32 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 32  2.1 {.  execsql2
4b90: 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73   {.    PRAGMA us
4ba0: 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a  er_version;.  }.
4bb0: 7d 20 7b 75 73 65 72 5f 76 65 72 73 69 6f 6e 20  } {user_version 
4bc0: 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  0}.do_test pragm
4bd0: 61 2d 38 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63  a-8.2.2 {.  exec
4be0: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
4bf0: 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 3d 20   user_version = 
4c00: 32 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74  2;.  }.} {}.do_t
4c10: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 33  est pragma-8.2.3
4c20: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 32 20  .1 {.  execsql2 
4c30: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73 65  {.    PRAGMA use
4c40: 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d  r_version;.  }.}
4c50: 20 7b 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 32   {user_version 2
4c60: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
4c70: 2d 38 2e 32 2e 33 2e 32 20 7b 0a 20 20 64 62 20  -8.2.3.2 {.  db 
4c80: 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20  close.  sqlite3 
4c90: 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65  db test.db.  exe
4ca0: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
4cb0: 41 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b 0a  A user_version;.
4cc0: 20 20 7d 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73    }.} {2}.do_tes
4cd0: 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e 31  t pragma-8.2.4.1
4ce0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4cf0: 20 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61     PRAGMA schema
4d00: 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20  _version;.  }.} 
4d10: 7b 31 30 38 7d 0a 69 66 63 61 70 61 62 6c 65 20  {108}.ifcapable 
4d20: 76 61 63 75 75 6d 20 7b 0a 20 20 64 6f 5f 74 65  vacuum {.  do_te
4d30: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e  st pragma-8.2.4.
4d40: 32 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  2 {.    execsql 
4d50: 7b 0a 20 20 20 20 20 20 56 41 43 55 55 4d 3b 0a  {.      VACUUM;.
4d60: 20 20 20 20 20 20 50 52 41 47 4d 41 20 75 73 65        PRAGMA use
4d70: 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 20 20 7d  r_version;.    }
4d80: 0a 20 20 7d 20 7b 32 7d 0a 20 20 64 6f 5f 74 65  .  } {2}.  do_te
4d90: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e  st pragma-8.2.4.
4da0: 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  3 {.    execsql 
4db0: 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 73  {.      PRAGMA s
4dc0: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20  chema_version;. 
4dd0: 20 20 20 7d 0a 20 20 7d 20 7b 31 30 39 7d 0a 7d     }.  } {109}.}
4de0: 0a 0a 69 66 63 61 70 61 62 6c 65 20 61 74 74 61  ..ifcapable atta
4df0: 63 68 20 7b 0a 20 20 64 62 20 65 76 61 6c 20 7b  ch {.  db eval {
4e00: 41 54 54 41 43 48 20 27 74 65 73 74 32 2e 64 62  ATTACH 'test2.db
4e10: 27 20 41 53 20 61 75 78 7d 0a 20 20 0a 20 20 23  ' AS aux}.  .  #
4e20: 20 43 68 65 63 6b 20 74 68 61 74 20 74 68 65 20   Check that the 
4e30: 75 73 65 72 2d 76 65 72 73 69 6f 6e 20 69 6e 20  user-version in 
4e40: 74 68 65 20 61 75 78 69 6c 61 72 79 20 64 61 74  the auxilary dat
4e50: 61 62 61 73 65 20 63 61 6e 20 62 65 20 6d 61 6e  abase can be man
4e60: 69 70 75 6c 61 74 65 64 20 28 0a 20 20 23 20 61  ipulated (.  # a
4e70: 6e 64 20 74 68 61 74 20 77 65 20 61 72 65 6e 27  nd that we aren'
4e80: 74 20 61 63 63 69 64 65 6e 74 61 6c 6c 79 20 6d  t accidentally m
4e90: 61 6e 69 70 75 6c 61 74 69 6e 67 20 74 68 65 20  anipulating the 
4ea0: 73 61 6d 65 20 69 6e 20 74 68 65 20 6d 61 69 6e  same in the main
4eb0: 20 64 62 29 2e 0a 20 20 64 6f 5f 74 65 73 74 20   db)..  do_test 
4ec0: 70 72 61 67 6d 61 2d 38 2e 32 2e 35 20 7b 0a 20  pragma-8.2.5 {. 
4ed0: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
4ee0: 20 20 20 50 52 41 47 4d 41 20 61 75 78 2e 75 73     PRAGMA aux.us
4ef0: 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 20 20  er_version;.    
4f00: 7d 0a 20 20 7d 20 7b 30 7d 0a 20 20 64 6f 5f 74  }.  } {0}.  do_t
4f10: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 36  est pragma-8.2.6
4f20: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
4f30: 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 61 75  .      PRAGMA au
4f40: 78 2e 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 3d  x.user_version =
4f50: 20 33 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d   3;.    }.  } {}
4f60: 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  .  do_test pragm
4f70: 61 2d 38 2e 32 2e 37 20 7b 0a 20 20 20 20 65 78  a-8.2.7 {.    ex
4f80: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52  ecsql {.      PR
4f90: 41 47 4d 41 20 61 75 78 2e 75 73 65 72 5f 76 65  AGMA aux.user_ve
4fa0: 72 73 69 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 7d  rsion;.    }.  }
4fb0: 20 7b 33 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70   {3}.  do_test p
4fc0: 72 61 67 6d 61 2d 38 2e 32 2e 38 20 7b 0a 20 20  ragma-8.2.8 {.  
4fd0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
4fe0: 20 20 50 52 41 47 4d 41 20 6d 61 69 6e 2e 75 73    PRAGMA main.us
4ff0: 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 20 20  er_version;.    
5000: 7d 0a 20 20 7d 20 7b 32 7d 0a 20 20 0a 20 20 23  }.  } {2}.  .  #
5010: 20 4e 6f 77 20 63 68 65 63 6b 20 74 68 61 74 20   Now check that 
5020: 61 20 52 4f 4c 4c 42 41 43 4b 20 72 65 73 65 74  a ROLLBACK reset
5030: 73 20 74 68 65 20 75 73 65 72 2d 76 65 72 73 69  s the user-versi
5040: 6f 6e 20 69 66 20 69 74 20 68 61 73 20 62 65 65  on if it has bee
5050: 6e 20 6d 6f 64 69 66 69 65 64 0a 20 20 23 20 77  n modified.  # w
5060: 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74  ithin a transact
5070: 69 6f 6e 2e 0a 20 20 64 6f 5f 74 65 73 74 20 70  ion..  do_test p
5080: 72 61 67 6d 61 2d 38 2e 32 2e 39 20 7b 0a 20 20  ragma-8.2.9 {.  
5090: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
50a0: 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 20 20 50    BEGIN;.      P
50b0: 52 41 47 4d 41 20 61 75 78 2e 75 73 65 72 5f 76  RAGMA aux.user_v
50c0: 65 72 73 69 6f 6e 20 3d 20 31 30 3b 0a 20 20 20  ersion = 10;.   
50d0: 20 20 20 50 52 41 47 4d 41 20 75 73 65 72 5f 76     PRAGMA user_v
50e0: 65 72 73 69 6f 6e 20 3d 20 31 31 3b 0a 20 20 20  ersion = 11;.   
50f0: 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74   }.  } {}.  do_t
5100: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 31  est pragma-8.2.1
5110: 30 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  0 {.    execsql 
5120: 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 61  {.      PRAGMA a
5130: 75 78 2e 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b  ux.user_version;
5140: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 30 7d 0a  .    }.  } {10}.
5150: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
5160: 2d 38 2e 32 2e 31 31 20 7b 0a 20 20 20 20 65 78  -8.2.11 {.    ex
5170: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52  ecsql {.      PR
5180: 41 47 4d 41 20 6d 61 69 6e 2e 75 73 65 72 5f 76  AGMA main.user_v
5190: 65 72 73 69 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20  ersion;.    }.  
51a0: 7d 20 7b 31 31 7d 0a 20 20 64 6f 5f 74 65 73 74  } {11}.  do_test
51b0: 20 70 72 61 67 6d 61 2d 38 2e 32 2e 31 32 20 7b   pragma-8.2.12 {
51c0: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  .    execsql {. 
51d0: 20 20 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20       ROLLBACK;. 
51e0: 20 20 20 20 20 50 52 41 47 4d 41 20 61 75 78 2e       PRAGMA aux.
51f0: 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20  user_version;.  
5200: 20 20 7d 0a 20 20 7d 20 7b 33 7d 0a 20 20 64 6f    }.  } {3}.  do
5210: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32  _test pragma-8.2
5220: 2e 31 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71  .13 {.    execsq
5230: 6c 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41  l {.      PRAGMA
5240: 20 6d 61 69 6e 2e 75 73 65 72 5f 76 65 72 73 69   main.user_versi
5250: 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32  on;.    }.  } {2
5260: 7d 0a 7d 0a 0a 23 20 54 72 79 20 61 20 6e 65 67  }.}..# Try a neg
5270: 61 74 69 76 65 20 76 61 6c 75 65 20 66 6f 72 20  ative value for 
5280: 74 68 65 20 75 73 65 72 2d 76 65 72 73 69 6f 6e  the user-version
5290: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
52a0: 38 2e 32 2e 31 34 20 7b 0a 20 20 65 78 65 63 73  8.2.14 {.  execs
52b0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
52c0: 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 3d 20 2d  user_version = -
52d0: 34 35 30 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f  450;.  }.} {}.do
52e0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32  _test pragma-8.2
52f0: 2e 31 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .15 {.  execsql 
5300: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73 65  {.    PRAGMA use
5310: 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d  r_version;.  }.}
5320: 20 7b 2d 34 35 30 7d 0a 7d 20 3b 20 23 20 69 66   {-450}.} ; # if
5330: 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61 5f 76  capable schema_v
5340: 65 72 73 69 6f 6e 0a 0a 23 20 43 68 65 63 6b 20  ersion..# Check 
5350: 74 6f 20 73 65 65 20 69 66 20 54 45 4d 50 5f 53  to see if TEMP_S
5360: 54 4f 52 45 20 69 73 20 6d 65 6d 6f 72 79 20 6f  TORE is memory o
5370: 72 20 64 69 73 6b 2e 20 20 52 65 74 75 72 6e 20  r disk.  Return 
5380: 73 74 72 69 6e 67 73 0a 23 20 22 6d 65 6d 6f 72  strings.# "memor
5390: 79 22 20 6f 72 20 22 64 69 73 6b 22 20 61 73 20  y" or "disk" as 
53a0: 61 70 70 72 6f 70 72 69 61 74 65 2e 0a 23 0a 70  appropriate..#.p
53b0: 72 6f 63 20 63 68 65 63 6b 5f 74 65 6d 70 5f 73  roc check_temp_s
53c0: 74 6f 72 65 20 7b 7d 20 7b 0a 20 20 64 62 20 65  tore {} {.  db e
53d0: 76 61 6c 20 7b 43 52 45 41 54 45 20 54 45 4d 50  val {CREATE TEMP
53e0: 20 54 41 42 4c 45 20 49 46 20 4e 4f 54 20 45 58   TABLE IF NOT EX
53f0: 49 53 54 53 20 61 28 62 29 7d 0a 20 20 64 62 20  ISTS a(b)}.  db 
5400: 65 76 61 6c 20 7b 50 52 41 47 4d 41 20 64 61 74  eval {PRAGMA dat
5410: 61 62 61 73 65 5f 6c 69 73 74 7d 20 7b 0a 20 20  abase_list} {.  
5420: 20 20 69 66 20 7b 24 6e 61 6d 65 3d 3d 22 74 65    if {$name=="te
5430: 6d 70 22 7d 20 7b 0a 20 20 20 20 20 20 73 65 74  mp"} {.      set
5440: 20 62 74 20 5b 62 74 72 65 65 5f 66 72 6f 6d 5f   bt [btree_from_
5450: 64 62 20 64 62 20 31 5d 0a 20 20 20 20 20 20 69  db db 1].      i
5460: 66 20 7b 5b 62 74 72 65 65 5f 69 73 6d 65 6d 64  f {[btree_ismemd
5470: 62 20 24 62 74 5d 7d 20 7b 0a 20 20 20 20 20 20  b $bt]} {.      
5480: 20 20 72 65 74 75 72 6e 20 22 6d 65 6d 6f 72 79    return "memory
5490: 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  ".      }.      
54a0: 72 65 74 75 72 6e 20 22 64 69 73 6b 22 0a 20 20  return "disk".  
54b0: 20 20 7d 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e    }.  }.  return
54c0: 20 22 75 6e 6b 6e 6f 77 6e 22 0a 7d 0a 0a 0a 23   "unknown".}...#
54d0: 20 54 65 73 74 20 74 65 6d 70 5f 73 74 6f 72 65   Test temp_store
54e0: 20 61 6e 64 20 74 65 6d 70 5f 73 74 6f 72 65 5f   and temp_store_
54f0: 64 69 72 65 63 74 6f 72 79 20 70 72 61 67 6d 61  directory pragma
5500: 73 0a 23 0a 69 66 63 61 70 61 62 6c 65 20 70 61  s.#.ifcapable pa
5510: 67 65 72 5f 70 72 61 67 6d 61 73 20 7b 0a 64 6f  ger_pragmas {.do
5520: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39 2e 31  _test pragma-9.1
5530: 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20   {.  db close.  
5540: 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e  sqlite3 db test.
5550: 64 62 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  db.  execsql {. 
5560: 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73     PRAGMA temp_s
5570: 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20 7b 30 7d 0a  tore;.  }.} {0}.
5580: 69 66 20 7b 24 54 45 4d 50 5f 53 54 4f 52 45 3c  if {$TEMP_STORE<
5590: 3d 31 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  =1} {.  do_test 
55a0: 70 72 61 67 6d 61 2d 39 2e 31 2e 31 20 7b 0a 20  pragma-9.1.1 {. 
55b0: 20 20 20 63 68 65 63 6b 5f 74 65 6d 70 5f 73 74     check_temp_st
55c0: 6f 72 65 0a 20 20 7d 20 7b 64 69 73 6b 7d 0a 7d  ore.  } {disk}.}
55d0: 20 65 6c 73 65 20 7b 0a 20 20 64 6f 5f 74 65 73   else {.  do_tes
55e0: 74 20 70 72 61 67 6d 61 2d 39 2e 31 2e 31 20 7b  t pragma-9.1.1 {
55f0: 0a 20 20 20 20 63 68 65 63 6b 5f 74 65 6d 70 5f  .    check_temp_
5600: 73 74 6f 72 65 0a 20 20 7d 20 7b 6d 65 6d 6f 72  store.  } {memor
5610: 79 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 72  y}.}..do_test pr
5620: 61 67 6d 61 2d 39 2e 32 20 7b 0a 20 20 64 62 20  agma-9.2 {.  db 
5630: 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20  close.  sqlite3 
5640: 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65  db test.db.  exe
5650: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
5660: 41 20 74 65 6d 70 5f 73 74 6f 72 65 3d 66 69 6c  A temp_store=fil
5670: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65  e;.    PRAGMA te
5680: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20  mp_store;.  }.} 
5690: 7b 31 7d 0a 69 66 20 7b 24 54 45 4d 50 5f 53 54  {1}.if {$TEMP_ST
56a0: 4f 52 45 3d 3d 33 7d 20 7b 0a 20 20 23 20 57 68  ORE==3} {.  # Wh
56b0: 65 6e 20 54 45 4d 50 5f 53 54 4f 52 45 20 69 73  en TEMP_STORE is
56c0: 20 33 2c 20 61 6c 77 61 79 73 20 75 73 65 20 6d   3, always use m
56d0: 65 6d 6f 72 79 20 72 65 67 61 72 64 6c 65 73 73  emory regardless
56e0: 20 6f 66 20 70 72 61 67 6d 61 20 73 65 74 74 69   of pragma setti
56f0: 6e 67 73 2e 0a 20 20 64 6f 5f 74 65 73 74 20 70  ngs..  do_test p
5700: 72 61 67 6d 61 2d 39 2e 32 2e 31 20 7b 0a 20 20  ragma-9.2.1 {.  
5710: 20 20 63 68 65 63 6b 5f 74 65 6d 70 5f 73 74 6f    check_temp_sto
5720: 72 65 0a 20 20 7d 20 7b 6d 65 6d 6f 72 79 7d 0a  re.  } {memory}.
5730: 7d 20 65 6c 73 65 20 7b 0a 20 20 64 6f 5f 74 65  } else {.  do_te
5740: 73 74 20 70 72 61 67 6d 61 2d 39 2e 32 2e 31 20  st pragma-9.2.1 
5750: 7b 0a 20 20 20 20 63 68 65 63 6b 5f 74 65 6d 70  {.    check_temp
5760: 5f 73 74 6f 72 65 0a 20 20 7d 20 7b 64 69 73 6b  _store.  } {disk
5770: 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 72 61  }.}..do_test pra
5780: 67 6d 61 2d 39 2e 33 20 7b 0a 20 20 64 62 20 63  gma-9.3 {.  db c
5790: 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64  lose.  sqlite3 d
57a0: 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63  b test.db.  exec
57b0: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
57c0: 20 74 65 6d 70 5f 73 74 6f 72 65 3d 6d 65 6d 6f   temp_store=memo
57d0: 72 79 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74  ry;.    PRAGMA t
57e0: 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d  emp_store;.  }.}
57f0: 20 7b 32 7d 0a 69 66 20 7b 24 54 45 4d 50 5f 53   {2}.if {$TEMP_S
5800: 54 4f 52 45 3d 3d 30 7d 20 7b 0a 20 20 23 20 57  TORE==0} {.  # W
5810: 68 65 6e 20 54 45 4d 50 5f 53 54 4f 52 45 20 69  hen TEMP_STORE i
5820: 73 20 30 2c 20 61 6c 77 61 79 73 20 75 73 65 20  s 0, always use 
5830: 74 68 65 20 64 69 73 6b 20 72 65 67 61 72 64 6c  the disk regardl
5840: 65 73 73 20 6f 66 20 70 72 61 67 6d 61 20 73 65  ess of pragma se
5850: 74 74 69 6e 67 73 2e 0a 20 20 64 6f 5f 74 65 73  ttings..  do_tes
5860: 74 20 70 72 61 67 6d 61 2d 39 2e 33 2e 31 20 7b  t pragma-9.3.1 {
5870: 0a 20 20 20 20 63 68 65 63 6b 5f 74 65 6d 70 5f  .    check_temp_
5880: 73 74 6f 72 65 0a 20 20 7d 20 7b 64 69 73 6b 7d  store.  } {disk}
5890: 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 64 6f 5f 74  .} else {.  do_t
58a0: 65 73 74 20 70 72 61 67 6d 61 2d 39 2e 33 2e 31  est pragma-9.3.1
58b0: 20 7b 0a 20 20 20 20 63 68 65 63 6b 5f 74 65 6d   {.    check_tem
58c0: 70 5f 73 74 6f 72 65 0a 20 20 7d 20 7b 6d 65 6d  p_store.  } {mem
58d0: 6f 72 79 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20  ory}.}..do_test 
58e0: 70 72 61 67 6d 61 2d 39 2e 34 20 7b 0a 20 20 65  pragma-9.4 {.  e
58f0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
5900: 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64  GMA temp_store_d
5910: 69 72 65 63 74 6f 72 79 3b 0a 20 20 7d 0a 7d 20  irectory;.  }.} 
5920: 7b 7d 0a 69 66 63 61 70 61 62 6c 65 20 77 73 64  {}.ifcapable wsd
5930: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61   {.  do_test pra
5940: 67 6d 61 2d 39 2e 35 20 7b 0a 20 20 20 20 73 65  gma-9.5 {.    se
5950: 74 20 70 77 64 20 5b 73 74 72 69 6e 67 20 6d 61  t pwd [string ma
5960: 70 20 7b 27 20 27 27 7d 20 5b 66 69 6c 65 20 6e  p {' ''} [file n
5970: 61 74 69 76 65 6e 61 6d 65 20 5b 70 77 64 5d 5d  ativename [pwd]]
5980: 5d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 22 0a  ].    execsql ".
5990: 20 20 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d        PRAGMA tem
59a0: 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
59b0: 79 3d 27 24 70 77 64 27 3b 0a 20 20 20 20 22 0a  y='$pwd';.    ".
59c0: 20 20 7d 20 7b 7d 0a 20 20 64 6f 5f 74 65 73 74    } {}.  do_test
59d0: 20 70 72 61 67 6d 61 2d 39 2e 36 20 7b 0a 20 20   pragma-9.6 {.  
59e0: 20 20 65 78 65 63 73 71 6c 20 7b 20 0a 20 20 20    execsql { .   
59f0: 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73     PRAGMA temp_s
5a00: 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 3b 0a  tore_directory;.
5a10: 20 20 20 20 7d 0a 20 20 7d 20 5b 6c 69 73 74 20      }.  } [list 
5a20: 5b 66 69 6c 65 20 6e 61 74 69 76 65 6e 61 6d 65  [file nativename
5a30: 20 5b 70 77 64 5d 5d 5d 0a 20 20 64 6f 5f 74 65   [pwd]]].  do_te
5a40: 73 74 20 70 72 61 67 6d 61 2d 39 2e 37 20 7b 0a  st pragma-9.7 {.
5a50: 20 20 20 20 63 61 74 63 68 73 71 6c 20 7b 20 0a      catchsql { .
5a60: 20 20 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d        PRAGMA tem
5a70: 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
5a80: 79 3d 27 2f 4e 4f 4e 2f 45 58 49 53 54 45 4e 54  y='/NON/EXISTENT
5a90: 2f 50 41 54 48 2f 46 4f 4f 42 41 52 27 3b 0a 20  /PATH/FOOBAR';. 
5aa0: 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b 6e 6f 74     }.  } {1 {not
5ab0: 20 61 20 77 72 69 74 61 62 6c 65 20 64 69 72 65   a writable dire
5ac0: 63 74 6f 72 79 7d 7d 0a 20 20 64 6f 5f 74 65 73  ctory}}.  do_tes
5ad0: 74 20 70 72 61 67 6d 61 2d 39 2e 38 20 7b 0a 20  t pragma-9.8 {. 
5ae0: 20 20 20 65 78 65 63 73 71 6c 20 7b 20 0a 20 20     execsql { .  
5af0: 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f      PRAGMA temp_
5b00: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 3d  store_directory=
5b10: 27 27 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7d  '';.    }.  } {}
5b20: 0a 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78  .  if {![info ex
5b30: 69 73 74 73 20 54 45 4d 50 5f 53 54 4f 52 45 5d  ists TEMP_STORE]
5b40: 20 7c 7c 20 24 54 45 4d 50 5f 53 54 4f 52 45 3c   || $TEMP_STORE<
5b50: 3d 31 7d 20 7b 0a 20 20 20 20 69 66 63 61 70 61  =1} {.    ifcapa
5b60: 62 6c 65 20 74 65 6d 70 64 62 20 7b 0a 20 20 20  ble tempdb {.   
5b70: 20 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d     do_test pragm
5b80: 61 2d 39 2e 39 20 7b 0a 20 20 20 20 20 20 20 20  a-9.9 {.        
5b90: 65 78 65 63 73 71 6c 20 7b 20 0a 20 20 20 20 20  execsql { .     
5ba0: 20 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70       PRAGMA temp
5bb0: 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
5bc0: 3b 0a 20 20 20 20 20 20 20 20 20 20 50 52 41 47  ;.          PRAG
5bd0: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 3d 46 49  MA temp_store=FI
5be0: 4c 45 3b 0a 20 20 20 20 20 20 20 20 20 20 43 52  LE;.          CR
5bf0: 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20  EATE TEMP TABLE 
5c00: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
5c10: 74 6f 72 79 5f 74 65 73 74 28 61 20 69 6e 74 65  tory_test(a inte
5c20: 67 65 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ger);.          
5c30: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 6d 70  INSERT INTO temp
5c40: 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
5c50: 5f 74 65 73 74 20 76 61 6c 75 65 73 20 28 32 29  _test values (2)
5c60: 3b 0a 20 20 20 20 20 20 20 20 20 20 53 45 4c 45  ;.          SELE
5c70: 43 54 20 2a 20 46 52 4f 4d 20 74 65 6d 70 5f 73  CT * FROM temp_s
5c80: 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 5f 74  tore_directory_t
5c90: 65 73 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20  est;.        }. 
5ca0: 20 20 20 20 20 7d 20 7b 32 7d 0a 20 20 20 20 20       } {2}.     
5cb0: 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d   do_test pragma-
5cc0: 39 2e 31 30 20 7b 0a 20 20 20 20 20 20 20 20 63  9.10 {.        c
5cd0: 61 74 63 68 73 71 6c 20 22 0a 20 20 20 20 20 20  atchsql ".      
5ce0: 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f      PRAGMA temp_
5cf0: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 3d  store_directory=
5d00: 27 24 70 77 64 27 3b 0a 20 20 20 20 20 20 20 20  '$pwd';.        
5d10: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
5d20: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
5d30: 74 6f 72 79 5f 74 65 73 74 3b 0a 20 20 20 20 20  tory_test;.     
5d40: 20 20 20 22 0a 20 20 20 20 20 20 7d 20 7b 31 20     ".      } {1 
5d50: 7b 6e 6f 20 73 75 63 68 20 74 61 62 6c 65 3a 20  {no such table: 
5d60: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
5d70: 74 6f 72 79 5f 74 65 73 74 7d 7d 0a 20 20 20 20  tory_test}}.    
5d80: 7d 0a 20 20 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20  }.  }.}.do_test 
5d90: 70 72 61 67 6d 61 2d 39 2e 31 31 20 7b 0a 20 20  pragma-9.11 {.  
5da0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
5db0: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20  AGMA temp_store 
5dc0: 3d 20 30 3b 0a 20 20 20 20 50 52 41 47 4d 41 20  = 0;.    PRAGMA 
5dd0: 74 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a  temp_store;.  }.
5de0: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {0}.do_test pr
5df0: 61 67 6d 61 2d 39 2e 31 32 20 7b 0a 20 20 65 78  agma-9.12 {.  ex
5e00: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
5e10: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20  MA temp_store = 
5e20: 31 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65  1;.    PRAGMA te
5e30: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20  mp_store;.  }.} 
5e40: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {1}.do_test prag
5e50: 6d 61 2d 39 2e 31 33 20 7b 0a 20 20 65 78 65 63  ma-9.13 {.  exec
5e60: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
5e70: 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 32 3b   temp_store = 2;
5e80: 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70  .    PRAGMA temp
5e90: 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20 7b 32  _store;.  }.} {2
5ea0: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
5eb0: 2d 39 2e 31 34 20 7b 0a 20 20 65 78 65 63 73 71  -9.14 {.  execsq
5ec0: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 74  l {.    PRAGMA t
5ed0: 65 6d 70 5f 73 74 6f 72 65 20 3d 20 33 3b 0a 20  emp_store = 3;. 
5ee0: 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73     PRAGMA temp_s
5ef0: 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20 7b 30 7d 0a  tore;.  }.} {0}.
5f00: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39  do_test pragma-9
5f10: 2e 31 35 20 7b 0a 20 20 63 61 74 63 68 73 71 6c  .15 {.  catchsql
5f20: 20 7b 0a 20 20 20 20 42 45 47 49 4e 20 45 58 43   {.    BEGIN EXC
5f30: 4c 55 53 49 56 45 3b 0a 20 20 20 20 43 52 45 41  LUSIVE;.    CREA
5f40: 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20 74 65  TE TEMP TABLE te
5f50: 6d 70 5f 74 61 62 6c 65 28 74 29 3b 0a 20 20 20  mp_table(t);.   
5f60: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 6d   INSERT INTO tem
5f70: 70 5f 74 61 62 6c 65 20 56 41 4c 55 45 53 28 27  p_table VALUES('
5f80: 76 61 6c 75 61 62 6c 65 20 64 61 74 61 27 29 3b  valuable data');
5f90: 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70  .    PRAGMA temp
5fa0: 5f 73 74 6f 72 65 20 3d 20 31 3b 0a 20 20 7d 0a  _store = 1;.  }.
5fb0: 7d 20 7b 31 20 7b 74 65 6d 70 6f 72 61 72 79 20  } {1 {temporary 
5fc0: 73 74 6f 72 61 67 65 20 63 61 6e 6e 6f 74 20 62  storage cannot b
5fd0: 65 20 63 68 61 6e 67 65 64 20 66 72 6f 6d 20 77  e changed from w
5fe0: 69 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74  ithin a transact
5ff0: 69 6f 6e 7d 7d 0a 64 6f 5f 74 65 73 74 20 70 72  ion}}.do_test pr
6000: 61 67 6d 61 2d 39 2e 31 36 20 7b 0a 20 20 65 78  agma-9.16 {.  ex
6010: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
6020: 43 54 20 2a 20 46 52 4f 4d 20 74 65 6d 70 5f 74  CT * FROM temp_t
6030: 61 62 6c 65 3b 0a 20 20 20 20 43 4f 4d 4d 49 54  able;.    COMMIT
6040: 3b 0a 20 20 7d 0a 7d 20 7b 7b 76 61 6c 75 61 62  ;.  }.} {{valuab
6050: 6c 65 20 64 61 74 61 7d 7d 0a 0a 64 6f 5f 74 65  le data}}..do_te
6060: 73 74 20 70 72 61 67 6d 61 2d 39 2e 31 37 20 7b  st pragma-9.17 {
6070: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
6080: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 6d   INSERT INTO tem
6090: 70 5f 74 61 62 6c 65 20 56 41 4c 55 45 53 28 27  p_table VALUES('
60a0: 76 61 6c 75 61 62 6c 65 20 64 61 74 61 20 49 49  valuable data II
60b0: 27 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  ');.    SELECT *
60c0: 20 46 52 4f 4d 20 74 65 6d 70 5f 74 61 62 6c 65   FROM temp_table
60d0: 3b 0a 20 20 7d 0a 7d 20 7b 7b 76 61 6c 75 61 62  ;.  }.} {{valuab
60e0: 6c 65 20 64 61 74 61 7d 20 7b 76 61 6c 75 61 62  le data} {valuab
60f0: 6c 65 20 64 61 74 61 20 49 49 7d 7d 0a 0a 64 6f  le data II}}..do
6100: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39 2e 31  _test pragma-9.1
6110: 38 20 7b 0a 20 20 73 65 74 20 72 63 20 5b 63 61  8 {.  set rc [ca
6120: 74 63 68 20 7b 0a 20 20 20 20 64 62 20 65 76 61  tch {.    db eva
6130: 6c 20 7b 53 45 4c 45 43 54 20 74 20 46 52 4f 4d  l {SELECT t FROM
6140: 20 74 65 6d 70 5f 74 61 62 6c 65 7d 20 7b 0a 20   temp_table} {. 
6150: 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b 70 72       execsql {pr
6160: 61 67 6d 61 20 74 65 6d 70 5f 73 74 6f 72 65 20  agma temp_store 
6170: 3d 20 31 7d 0a 20 20 20 20 7d 0a 20 20 7d 20 6d  = 1}.    }.  } m
6180: 73 67 5d 0a 20 20 6c 69 73 74 20 24 72 63 20 24  sg].  list $rc $
6190: 6d 73 67 0a 7d 20 7b 31 20 7b 74 65 6d 70 6f 72  msg.} {1 {tempor
61a0: 61 72 79 20 73 74 6f 72 61 67 65 20 63 61 6e 6e  ary storage cann
61b0: 6f 74 20 62 65 20 63 68 61 6e 67 65 64 20 66 72  ot be changed fr
61c0: 6f 6d 20 77 69 74 68 69 6e 20 61 20 74 72 61 6e  om within a tran
61d0: 73 61 63 74 69 6f 6e 7d 7d 0a 0a 7d 20 3b 23 20  saction}}..} ;# 
61e0: 69 66 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f  ifcapable pager_
61f0: 70 72 61 67 6d 61 73 0a 0a 69 66 63 61 70 61 62  pragmas..ifcapab
6200: 6c 65 20 74 72 69 67 67 65 72 20 7b 0a 0a 64 6f  le trigger {..do
6210: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 30 2e  _test pragma-10.
6220: 30 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  0 {.  catchsql {
6230: 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45 20  .    DROP TABLE 
6240: 6d 61 69 6e 2e 74 31 3b 0a 20 20 7d 0a 20 20 65  main.t1;.  }.  e
6250: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
6260: 47 4d 41 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65  GMA count_change
6270: 73 20 3d 20 31 3b 0a 0a 20 20 20 20 43 52 45 41  s = 1;..    CREA
6280: 54 45 20 54 41 42 4c 45 20 74 31 28 61 20 50 52  TE TABLE t1(a PR
6290: 49 4d 41 52 59 20 4b 45 59 29 3b 0a 20 20 20 20  IMARY KEY);.    
62a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 5f  CREATE TABLE t1_
62b0: 6d 69 72 72 6f 72 28 61 29 3b 0a 20 20 20 20 43  mirror(a);.    C
62c0: 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 5f 6d  REATE TABLE t1_m
62d0: 69 72 72 6f 72 32 28 61 29 3b 0a 20 20 20 20 43  irror2(a);.    C
62e0: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74 31  REATE TRIGGER t1
62f0: 5f 62 69 20 42 45 46 4f 52 45 20 49 4e 53 45 52  _bi BEFORE INSER
6300: 54 20 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20  T ON t1 BEGIN . 
6310: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
6320: 20 74 31 5f 6d 69 72 72 6f 72 20 56 41 4c 55 45   t1_mirror VALUE
6330: 53 28 6e 65 77 2e 61 29 3b 0a 20 20 20 20 45 4e  S(new.a);.    EN
6340: 44 3b 0a 20 20 20 20 43 52 45 41 54 45 20 54 52  D;.    CREATE TR
6350: 49 47 47 45 52 20 74 31 5f 61 69 20 41 46 54 45  IGGER t1_ai AFTE
6360: 52 20 49 4e 53 45 52 54 20 4f 4e 20 74 31 20 42  R INSERT ON t1 B
6370: 45 47 49 4e 20 0a 20 20 20 20 20 20 49 4e 53 45  EGIN .      INSE
6380: 52 54 20 49 4e 54 4f 20 74 31 5f 6d 69 72 72 6f  RT INTO t1_mirro
6390: 72 32 20 56 41 4c 55 45 53 28 6e 65 77 2e 61 29  r2 VALUES(new.a)
63a0: 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20 20 20 43  ;.    END;.    C
63b0: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74 31  REATE TRIGGER t1
63c0: 5f 62 75 20 42 45 46 4f 52 45 20 55 50 44 41 54  _bu BEFORE UPDAT
63d0: 45 20 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20  E ON t1 BEGIN . 
63e0: 20 20 20 20 20 55 50 44 41 54 45 20 74 31 5f 6d       UPDATE t1_m
63f0: 69 72 72 6f 72 20 53 45 54 20 61 20 3d 20 6e 65  irror SET a = ne
6400: 77 2e 61 20 57 48 45 52 45 20 61 20 3d 20 6f 6c  w.a WHERE a = ol
6410: 64 2e 61 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20  d.a;.    END;.  
6420: 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52    CREATE TRIGGER
6430: 20 74 31 5f 61 75 20 41 46 54 45 52 20 55 50 44   t1_au AFTER UPD
6440: 41 54 45 20 4f 4e 20 74 31 20 42 45 47 49 4e 20  ATE ON t1 BEGIN 
6450: 0a 20 20 20 20 20 20 55 50 44 41 54 45 20 74 31  .      UPDATE t1
6460: 5f 6d 69 72 72 6f 72 32 20 53 45 54 20 61 20 3d  _mirror2 SET a =
6470: 20 6e 65 77 2e 61 20 57 48 45 52 45 20 61 20 3d   new.a WHERE a =
6480: 20 6f 6c 64 2e 61 3b 0a 20 20 20 20 45 4e 44 3b   old.a;.    END;
6490: 0a 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47  .    CREATE TRIG
64a0: 47 45 52 20 74 31 5f 62 64 20 42 45 46 4f 52 45  GER t1_bd BEFORE
64b0: 20 44 45 4c 45 54 45 20 4f 4e 20 74 31 20 42 45   DELETE ON t1 BE
64c0: 47 49 4e 20 0a 20 20 20 20 20 20 44 45 4c 45 54  GIN .      DELET
64d0: 45 20 46 52 4f 4d 20 74 31 5f 6d 69 72 72 6f 72  E FROM t1_mirror
64e0: 20 57 48 45 52 45 20 61 20 3d 20 6f 6c 64 2e 61   WHERE a = old.a
64f0: 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20 20 20 43  ;.    END;.    C
6500: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74 31  REATE TRIGGER t1
6510: 5f 61 64 20 41 46 54 45 52 20 44 45 4c 45 54 45  _ad AFTER DELETE
6520: 20 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20 20   ON t1 BEGIN .  
6530: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
6540: 74 31 5f 6d 69 72 72 6f 72 32 20 57 48 45 52 45  t1_mirror2 WHERE
6550: 20 61 20 3d 20 6f 6c 64 2e 61 3b 0a 20 20 20 20   a = old.a;.    
6560: 45 4e 44 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 64  END;.  }.} {}..d
6570: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 30  o_test pragma-10
6580: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
6590: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
65a0: 20 74 31 20 56 41 4c 55 45 53 28 72 61 6e 64 73   t1 VALUES(rands
65b0: 74 72 28 31 30 2c 31 30 29 29 3b 0a 20 20 7d 0a  tr(10,10));.  }.
65c0: 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {1}.do_test pr
65d0: 61 67 6d 61 2d 31 30 2e 32 20 7b 0a 20 20 65 78  agma-10.2 {.  ex
65e0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41  ecsql {.    UPDA
65f0: 54 45 20 74 31 20 53 45 54 20 61 20 3d 20 72 61  TE t1 SET a = ra
6600: 6e 64 73 74 72 28 31 30 2c 31 30 29 3b 0a 20 20  ndstr(10,10);.  
6610: 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  }.} {1}.do_test 
6620: 70 72 61 67 6d 61 2d 31 30 2e 33 20 7b 0a 20 20  pragma-10.3 {.  
6630: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 45  execsql {.    DE
6640: 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20  LETE FROM t1;.  
6650: 7d 0a 7d 20 7b 31 7d 0a 0a 7d 20 3b 23 20 69 66  }.} {1}..} ;# if
6660: 63 61 70 61 62 6c 65 20 74 72 69 67 67 65 72 0a  capable trigger.
6670: 0a 69 66 63 61 70 61 62 6c 65 20 73 63 68 65 6d  .ifcapable schem
6680: 61 5f 70 72 61 67 6d 61 73 20 7b 0a 20 20 64 6f  a_pragmas {.  do
6690: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 31 2e  _test pragma-11.
66a0: 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 32  1 {.    execsql2
66b0: 20 7b 0a 20 20 20 20 20 20 70 72 61 67 6d 61 20   {.      pragma 
66c0: 63 6f 6c 6c 61 74 69 6f 6e 5f 6c 69 73 74 3b 0a  collation_list;.
66d0: 20 20 20 20 7d 0a 20 20 7d 20 7b 73 65 71 20 30      }.  } {seq 0
66e0: 20 6e 61 6d 65 20 4e 4f 43 41 53 45 20 73 65 71   name NOCASE seq
66f0: 20 31 20 6e 61 6d 65 20 52 54 52 49 4d 20 73 65   1 name RTRIM se
6700: 71 20 32 20 6e 61 6d 65 20 42 49 4e 41 52 59 7d  q 2 name BINARY}
6710: 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  .  do_test pragm
6720: 61 2d 31 31 2e 32 20 7b 0a 20 20 20 20 64 62 20  a-11.2 {.    db 
6730: 63 6f 6c 6c 61 74 65 20 4e 65 77 5f 43 6f 6c 6c  collate New_Coll
6740: 61 74 69 6f 6e 20 62 6c 61 68 2e 2e 2e 0a 20 20  ation blah....  
6750: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
6760: 20 20 70 72 61 67 6d 61 20 63 6f 6c 6c 61 74 69    pragma collati
6770: 6f 6e 5f 6c 69 73 74 3b 0a 20 20 20 20 7d 0a 20  on_list;.    }. 
6780: 20 7d 20 7b 30 20 4e 65 77 5f 43 6f 6c 6c 61 74   } {0 New_Collat
6790: 69 6f 6e 20 31 20 4e 4f 43 41 53 45 20 32 20 52  ion 1 NOCASE 2 R
67a0: 54 52 49 4d 20 33 20 42 49 4e 41 52 59 7d 0a 7d  TRIM 3 BINARY}.}
67b0: 0a 0a 69 66 63 61 70 61 62 6c 65 20 73 63 68 65  ..ifcapable sche
67c0: 6d 61 5f 70 72 61 67 6d 61 73 26 26 74 65 6d 70  ma_pragmas&&temp
67d0: 64 62 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70  db {.  do_test p
67e0: 72 61 67 6d 61 2d 31 32 2e 31 20 7b 0a 20 20 20  ragma-12.1 {.   
67f0: 20 73 71 6c 69 74 65 33 20 64 62 32 20 74 65 73   sqlite3 db2 tes
6800: 74 2e 64 62 0a 20 20 20 20 65 78 65 63 73 71 6c  t.db.    execsql
6810: 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20   {.      PRAGMA 
6820: 74 65 6d 70 2e 74 61 62 6c 65 5f 69 6e 66 6f 28  temp.table_info(
6830: 27 61 62 63 27 29 3b 0a 20 20 20 20 7d 20 64 62  'abc');.    } db
6840: 32 0a 20 20 7d 20 7b 7d 0a 20 20 64 62 32 20 63  2.  } {}.  db2 c
6850: 6c 6f 73 65 0a 0a 20 20 64 6f 5f 74 65 73 74 20  lose..  do_test 
6860: 70 72 61 67 6d 61 2d 31 32 2e 32 20 7b 0a 20 20  pragma-12.2 {.  
6870: 20 20 73 71 6c 69 74 65 33 20 64 62 32 20 74 65    sqlite3 db2 te
6880: 73 74 2e 64 62 0a 20 20 20 20 65 78 65 63 73 71  st.db.    execsq
6890: 6c 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41  l {.      PRAGMA
68a0: 20 74 65 6d 70 2e 64 65 66 61 75 6c 74 5f 63 61   temp.default_ca
68b0: 63 68 65 5f 73 69 7a 65 20 3d 20 32 30 30 3b 0a  che_size = 200;.
68c0: 20 20 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d        PRAGMA tem
68d0: 70 2e 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f  p.default_cache_
68e0: 73 69 7a 65 3b 0a 20 20 20 20 7d 20 64 62 32 0a  size;.    } db2.
68f0: 20 20 7d 20 7b 32 30 30 7d 0a 20 20 64 62 32 20    } {200}.  db2 
6900: 63 6c 6f 73 65 0a 0a 20 20 64 6f 5f 74 65 73 74  close..  do_test
6910: 20 70 72 61 67 6d 61 2d 31 32 2e 33 20 7b 0a 20   pragma-12.3 {. 
6920: 20 20 20 73 71 6c 69 74 65 33 20 64 62 32 20 74     sqlite3 db2 t
6930: 65 73 74 2e 64 62 0a 20 20 20 20 65 78 65 63 73  est.db.    execs
6940: 71 6c 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d  ql {.      PRAGM
6950: 41 20 74 65 6d 70 2e 63 61 63 68 65 5f 73 69 7a  A temp.cache_siz
6960: 65 20 3d 20 34 30 30 3b 0a 20 20 20 20 20 20 50  e = 400;.      P
6970: 52 41 47 4d 41 20 74 65 6d 70 2e 63 61 63 68 65  RAGMA temp.cache
6980: 5f 73 69 7a 65 3b 0a 20 20 20 20 7d 20 64 62 32  _size;.    } db2
6990: 0a 20 20 7d 20 7b 34 30 30 7d 0a 20 20 64 62 32  .  } {400}.  db2
69a0: 20 63 6c 6f 73 65 0a 7d 0a 0a 69 66 63 61 70 61   close.}..ifcapa
69b0: 62 6c 65 20 62 6c 6f 62 6c 69 74 20 7b 0a 0a 64  ble bloblit {..d
69c0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 33  o_test pragma-13
69d0: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
69e0: 0a 20 20 20 20 44 52 4f 50 20 54 41 42 4c 45 20  .    DROP TABLE 
69f0: 49 46 20 45 58 49 53 54 53 20 74 34 3b 0a 20 20  IF EXISTS t4;.  
6a00: 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f 74 72    PRAGMA vdbe_tr
6a10: 61 63 65 3d 6f 6e 3b 0a 20 20 20 20 50 52 41 47  ace=on;.    PRAG
6a20: 4d 41 20 76 64 62 65 5f 6c 69 73 74 69 6e 67 3d  MA vdbe_listing=
6a30: 6f 6e 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  on;.    PRAGMA s
6a40: 71 6c 5f 74 72 61 63 65 3d 6f 6e 3b 0a 20 20 20  ql_trace=on;.   
6a50: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 34   CREATE TABLE t4
6a60: 28 61 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  (a INTEGER PRIMA
6a70: 52 59 20 4b 45 59 2c 62 29 3b 0a 20 20 20 20 49  RY KEY,b);.    I
6a80: 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 28 62 29  NSERT INTO t4(b)
6a90: 20 56 41 4c 55 45 53 28 78 27 30 31 32 33 34 35   VALUES(x'012345
6aa0: 36 37 38 39 61 62 63 64 65 66 30 31 32 33 34 35  6789abcdef012345
6ab0: 36 37 38 39 61 62 63 64 65 66 30 31 32 33 34 35  6789abcdef012345
6ac0: 36 37 38 39 27 29 3b 0a 20 20 20 20 49 4e 53 45  6789');.    INSE
6ad0: 52 54 20 49 4e 54 4f 20 74 34 28 62 29 20 56 41  RT INTO t4(b) VA
6ae0: 4c 55 45 53 28 72 61 6e 64 73 74 72 28 33 30 2c  LUES(randstr(30,
6af0: 33 30 29 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  30));.    INSERT
6b00: 20 49 4e 54 4f 20 74 34 28 62 29 20 56 41 4c 55   INTO t4(b) VALU
6b10: 45 53 28 31 2e 32 33 34 35 36 29 3b 0a 20 20 20  ES(1.23456);.   
6b20: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 28   INSERT INTO t4(
6b30: 62 29 20 56 41 4c 55 45 53 28 4e 55 4c 4c 29 3b  b) VALUES(NULL);
6b40: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
6b50: 20 74 34 28 62 29 20 56 41 4c 55 45 53 28 30 29   t4(b) VALUES(0)
6b60: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
6b70: 4f 20 74 34 28 62 29 20 53 45 4c 45 43 54 20 62  O t4(b) SELECT b
6b80: 7c 7c 62 7c 7c 62 7c 7c 62 20 46 52 4f 4d 20 74  ||b||b||b FROM t
6b90: 34 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20  4;.    SELECT * 
6ba0: 46 52 4f 4d 20 74 34 3b 0a 20 20 7d 0a 20 20 65  FROM t4;.  }.  e
6bb0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
6bc0: 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65 3d 6f  GMA vdbe_trace=o
6bd0: 66 66 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 76  ff;.    PRAGMA v
6be0: 64 62 65 5f 6c 69 73 74 69 6e 67 3d 6f 66 66 3b  dbe_listing=off;
6bf0: 0a 20 20 20 20 50 52 41 47 4d 41 20 73 71 6c 5f  .    PRAGMA sql_
6c00: 74 72 61 63 65 3d 6f 66 66 3b 0a 20 20 7d 0a 7d  trace=off;.  }.}
6c10: 20 7b 7d 0a 0a 7d 20 3b 23 20 69 66 63 61 70 61   {}..} ;# ifcapa
6c20: 62 6c 65 20 62 6c 6f 62 6c 69 74 20 0a 0a 69 66  ble bloblit ..if
6c30: 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f 70 72  capable pager_pr
6c40: 61 67 6d 61 73 20 7b 0a 20 20 64 62 20 63 6c 6f  agmas {.  db clo
6c50: 73 65 0a 20 20 66 69 6c 65 20 64 65 6c 65 74 65  se.  file delete
6c60: 20 2d 66 6f 72 63 65 20 74 65 73 74 2e 64 62 0a   -force test.db.
6c70: 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65 73    sqlite3 db tes
6c80: 74 2e 64 62 0a 0a 20 20 64 6f 5f 74 65 73 74 20  t.db..  do_test 
6c90: 70 72 61 67 6d 61 2d 31 34 2e 31 20 7b 0a 20 20  pragma-14.1 {.  
6ca0: 20 20 65 78 65 63 73 71 6c 20 7b 20 70 72 61 67    execsql { prag
6cb0: 6d 61 20 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d  ma auto_vacuum =
6cc0: 20 30 20 7d 0a 20 20 20 20 65 78 65 63 73 71 6c   0 }.    execsql
6cd0: 20 7b 20 70 72 61 67 6d 61 20 70 61 67 65 5f 63   { pragma page_c
6ce0: 6f 75 6e 74 20 7d 0a 20 20 7d 20 7b 30 7d 0a 0a  ount }.  } {0}..
6cf0: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
6d00: 2d 31 34 2e 32 20 7b 0a 20 20 20 20 65 78 65 63  -14.2 {.    exec
6d10: 73 71 6c 20 7b 20 0a 20 20 20 20 20 20 43 52 45  sql { .      CRE
6d20: 41 54 45 20 54 41 42 4c 45 20 61 62 63 28 61 2c  ATE TABLE abc(a,
6d30: 20 62 2c 20 63 29 3b 0a 20 20 20 20 20 20 50 52   b, c);.      PR
6d40: 41 47 4d 41 20 70 61 67 65 5f 63 6f 75 6e 74 3b  AGMA page_count;
6d50: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 32 7d 0a 0a  .    }.  } {2}..
6d60: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
6d70: 2d 31 34 2e 33 20 7b 0a 20 20 20 20 65 78 65 63  -14.3 {.    exec
6d80: 73 71 6c 20 7b 20 0a 20 20 20 20 20 20 42 45 47  sql { .      BEG
6d90: 49 4e 3b 0a 20 20 20 20 20 20 43 52 45 41 54 45  IN;.      CREATE
6da0: 20 54 41 42 4c 45 20 64 65 66 28 61 2c 20 62 2c   TABLE def(a, b,
6db0: 20 63 29 3b 0a 20 20 20 20 20 20 50 52 41 47 4d   c);.      PRAGM
6dc0: 41 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a 20 20  A page_count;.  
6dd0: 20 20 7d 0a 20 20 7d 20 7b 33 7d 0a 0a 20 20 64    }.  } {3}..  d
6de0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 34  o_test pragma-14
6df0: 2e 34 20 7b 0a 20 20 20 20 73 65 74 20 70 61 67  .4 {.    set pag
6e00: 65 5f 73 69 7a 65 20 5b 64 62 20 6f 6e 65 20 7b  e_size [db one {
6e10: 70 72 61 67 6d 61 20 70 61 67 65 5f 73 69 7a 65  pragma page_size
6e20: 7d 5d 0a 20 20 20 20 65 78 70 72 20 5b 66 69 6c  }].    expr [fil
6e30: 65 20 73 69 7a 65 20 74 65 73 74 2e 64 62 5d 20  e size test.db] 
6e40: 2f 20 24 70 61 67 65 5f 73 69 7a 65 0a 20 20 7d  / $page_size.  }
6e50: 20 7b 32 7d 0a 0a 20 20 64 6f 5f 74 65 73 74 20   {2}..  do_test 
6e60: 70 72 61 67 6d 61 2d 31 34 2e 35 20 7b 0a 20 20  pragma-14.5 {.  
6e70: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
6e80: 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20 20 20    ROLLBACK;.    
6e90: 20 20 50 52 41 47 4d 41 20 70 61 67 65 5f 63 6f    PRAGMA page_co
6ea0: 75 6e 74 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  unt;.    }.  } {
6eb0: 32 7d 0a 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  2}..  do_test pr
6ec0: 61 67 6d 61 2d 31 34 2e 36 20 7b 0a 20 20 20 20  agma-14.6 {.    
6ed0: 66 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f 72  file delete -for
6ee0: 63 65 20 74 65 73 74 32 2e 64 62 0a 20 20 20 20  ce test2.db.    
6ef0: 73 71 6c 69 74 65 33 20 64 62 32 20 74 65 73 74  sqlite3 db2 test
6f00: 32 2e 64 62 0a 20 20 20 20 65 78 65 63 73 71 6c  2.db.    execsql
6f10: 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20   {.      PRAGMA 
6f20: 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d 20 30 3b  auto_vacuum = 0;
6f30: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41  .      CREATE TA
6f40: 42 4c 45 20 74 31 28 61 2c 20 62 2c 20 63 29 3b  BLE t1(a, b, c);
6f50: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41  .      CREATE TA
6f60: 42 4c 45 20 74 32 28 61 2c 20 62 2c 20 63 29 3b  BLE t2(a, b, c);
6f70: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41  .      CREATE TA
6f80: 42 4c 45 20 74 33 28 61 2c 20 62 2c 20 63 29 3b  BLE t3(a, b, c);
6f90: 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54 41  .      CREATE TA
6fa0: 42 4c 45 20 74 34 28 61 2c 20 62 2c 20 63 29 3b  BLE t4(a, b, c);
6fb0: 0a 20 20 20 20 7d 20 64 62 32 0a 20 20 20 20 64  .    } db2.    d
6fc0: 62 32 20 63 6c 6f 73 65 0a 20 20 20 20 65 78 65  b2 close.    exe
6fd0: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 41 54 54  csql {.      ATT
6fe0: 41 43 48 20 27 74 65 73 74 32 2e 64 62 27 20 41  ACH 'test2.db' A
6ff0: 53 20 61 75 78 3b 0a 20 20 20 20 20 20 50 52 41  S aux;.      PRA
7000: 47 4d 41 20 61 75 78 2e 70 61 67 65 5f 63 6f 75  GMA aux.page_cou
7010: 6e 74 3b 0a 20 20 20 20 7d 20 0a 20 20 7d 20 7b  nt;.    } .  } {
7020: 35 7d 0a 7d 0a 0a 23 20 54 65 73 74 20 74 68 61  5}.}..# Test tha
7030: 74 20 74 68 65 20 76 61 6c 75 65 20 73 65 74 20  t the value set 
7040: 75 73 69 6e 67 20 74 68 65 20 63 61 63 68 65 5f  using the cache_
7050: 73 69 7a 65 20 70 72 61 67 6d 61 20 69 73 20 6e  size pragma is n
7060: 6f 74 20 72 65 73 65 74 20 77 68 65 6e 20 74 68  ot reset when th
7070: 65 0a 23 20 73 63 68 65 6d 61 20 69 73 20 72 65  e.# schema is re
7080: 6c 6f 61 64 65 64 2e 0a 23 0a 69 66 63 61 70 61  loaded..#.ifcapa
7090: 62 6c 65 20 70 61 67 65 72 5f 70 72 61 67 6d 61  ble pager_pragma
70a0: 73 20 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20  s {.  db close. 
70b0: 20 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74   sqlite3 db test
70c0: 2e 64 62 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  .db.  do_test pr
70d0: 61 67 6d 61 2d 31 35 2e 31 20 7b 0a 20 20 20 20  agma-15.1 {.    
70e0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
70f0: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
7100: 65 3d 35 39 3b 0a 20 20 20 20 20 20 50 52 41 47  e=59;.      PRAG
7110: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
7120: 20 20 20 7d 0a 20 20 7d 20 7b 35 39 7d 0a 20 20     }.  } {59}.  
7130: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31  do_test pragma-1
7140: 35 2e 32 20 7b 0a 20 20 20 20 73 71 6c 69 74 65  5.2 {.    sqlite
7150: 33 20 64 62 32 20 74 65 73 74 2e 64 62 0a 20 20  3 db2 test.db.  
7160: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
7170: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 6e    CREATE TABLE n
7180: 65 77 74 61 62 6c 65 28 61 2c 20 62 2c 20 63 29  ewtable(a, b, c)
7190: 3b 0a 20 20 20 20 7d 20 64 62 32 0a 20 20 20 20  ;.    } db2.    
71a0: 64 62 32 20 63 6c 6f 73 65 0a 20 20 7d 20 7b 7d  db2 close.  } {}
71b0: 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  .  do_test pragm
71c0: 61 2d 31 35 2e 33 20 7b 0a 20 20 20 20 23 20 45  a-15.3 {.    # E
71d0: 76 61 6c 75 61 74 69 6e 67 20 74 68 69 73 20 73  valuating this s
71e0: 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 63 61  tatement will ca
71f0: 75 73 65 20 74 68 65 20 73 63 68 65 6d 61 20 74  use the schema t
7200: 6f 20 62 65 20 72 65 6c 6f 61 64 65 64 20 28 62  o be reloaded (b
7210: 65 63 61 75 73 65 0a 20 20 20 20 23 20 74 68 65  ecause.    # the
7220: 20 73 63 68 65 6d 61 20 77 61 73 20 63 68 61 6e   schema was chan
7230: 67 65 64 20 62 79 20 61 6e 6f 74 68 65 72 20 63  ged by another c
7240: 6f 6e 6e 65 63 74 69 6f 6e 20 69 6e 20 70 72 61  onnection in pra
7250: 67 6d 61 2d 31 35 2e 32 29 2e 20 41 74 20 6f 6e  gma-15.2). At on
7260: 65 0a 20 20 20 20 23 20 70 6f 69 6e 74 20 74 68  e.    # point th
7270: 65 72 65 20 77 61 73 20 61 20 62 75 67 20 74 68  ere was a bug th
7280: 61 74 20 72 65 73 65 74 20 74 68 65 20 63 61 63  at reset the cac
7290: 68 65 5f 73 69 7a 65 20 74 6f 20 69 74 73 20 64  he_size to its d
72a0: 65 66 61 75 6c 74 20 76 61 6c 75 65 0a 20 20 20  efault value.   
72b0: 20 23 20 77 68 65 6e 20 74 68 69 73 20 68 61 70   # when this hap
72c0: 70 65 6e 65 64 2e 20 0a 20 20 20 20 65 78 65 63  pened. .    exec
72d0: 73 71 6c 20 7b 20 53 45 4c 45 43 54 20 2a 20 46  sql { SELECT * F
72e0: 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65  ROM sqlite_maste
72f0: 72 20 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20  r }.    execsql 
7300: 7b 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73  { PRAGMA cache_s
7310: 69 7a 65 20 7d 0a 20 20 7d 20 7b 35 39 7d 0a 7d  ize }.  } {59}.}
7320: 0a 0a 23 20 52 65 73 65 74 20 74 68 65 20 73 71  ..# Reset the sq
7330: 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63  lite3_temp_direc
7340: 74 6f 72 79 20 76 61 72 69 61 62 6c 65 20 66 6f  tory variable fo
7350: 72 20 74 68 65 20 6e 65 78 74 20 72 75 6e 20 6f  r the next run o
7360: 66 20 74 65 73 74 73 3a 0a 73 71 6c 69 74 65 33  f tests:.sqlite3
7370: 20 64 62 58 20 3a 6d 65 6d 6f 72 79 3a 0a 64 62   dbX :memory:.db
7380: 58 20 65 76 61 6c 20 7b 50 52 41 47 4d 41 20 74  X eval {PRAGMA t
7390: 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
73a0: 6f 72 79 20 3d 20 22 22 7d 0a 64 62 58 20 63 6c  ory = ""}.dbX cl
73b0: 6f 73 65 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  ose..finish_test
73c0: 0a                                               .