/ Hex Artifact Content
Login

Artifact 4d2696d0c5bfc4ef28324684c2f9162243800496:


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 35 32 20 32 30 30 37 2f 30 33 2f 33 30 20 31  .52 2007/03/30 1
0200: 37 3a 31 31 3a 31 33 20 64 61 6e 69 65 6c 6b 31  7:11:13 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 0a 0a 69 66  st pragma..#..if
0520: 63 61 70 61 62 6c 65 20 21 70 72 61 67 6d 61 20  capable !pragma 
0530: 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a  {.  finish_test.
0540: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 23 20 44 65    return.}..# De
0550: 6c 65 74 65 20 74 68 65 20 70 72 65 65 78 69 73  lete the preexis
0560: 74 69 6e 67 20 64 61 74 61 62 61 73 65 20 74 6f  ting database to
0570: 20 61 76 6f 69 64 20 74 68 65 20 73 70 65 63 69   avoid the speci
0580: 61 6c 20 73 65 74 75 70 0a 23 20 74 68 61 74 20  al setup.# that 
0590: 74 68 65 20 22 61 6c 6c 2e 74 65 73 74 22 20 73  the "all.test" s
05a0: 63 72 69 70 74 20 64 6f 65 73 2e 0a 23 0a 64 62  cript does..#.db
05b0: 20 63 6c 6f 73 65 0a 66 69 6c 65 20 64 65 6c 65   close.file dele
05c0: 74 65 20 74 65 73 74 2e 64 62 20 74 65 73 74 2e  te test.db test.
05d0: 64 62 2d 6a 6f 75 72 6e 61 6c 0a 66 69 6c 65 20  db-journal.file 
05e0: 64 65 6c 65 74 65 20 74 65 73 74 33 2e 64 62 20  delete test3.db 
05f0: 74 65 73 74 33 2e 64 62 2d 6a 6f 75 72 6e 61 6c  test3.db-journal
0600: 0a 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74  .sqlite3 db test
0610: 2e 64 62 3b 20 73 65 74 20 44 42 20 5b 73 71 6c  .db; set DB [sql
0620: 69 74 65 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f  ite3_connection_
0630: 70 6f 69 6e 74 65 72 20 64 62 5d 0a 0a 69 66 63  pointer db]..ifc
0640: 61 70 61 62 6c 65 20 70 61 67 65 72 5f 70 72 61  apable pager_pra
0650: 67 6d 61 73 20 7b 0a 64 6f 5f 74 65 73 74 20 70  gmas {.do_test p
0660: 72 61 67 6d 61 2d 31 2e 31 20 7b 0a 20 20 65 78  ragma-1.1 {.  ex
0670: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0680: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
0690: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
06a0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
06b0: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
06c0: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 32 30 30  nous;.  }.} {200
06d0: 30 20 32 30 30 30 20 32 7d 0a 64 6f 5f 74 65 73  0 2000 2}.do_tes
06e0: 74 20 70 72 61 67 6d 61 2d 31 2e 32 20 7b 0a 20  t pragma-1.2 {. 
06f0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50   execsql {.    P
0700: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
0710: 73 3d 4f 46 46 3b 0a 20 20 20 20 50 52 41 47 4d  s=OFF;.    PRAGM
0720: 41 20 63 61 63 68 65 5f 73 69 7a 65 3d 31 32 33  A cache_size=123
0730: 34 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 63 61  4;.    PRAGMA ca
0740: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52  che_size;.    PR
0750: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63  AGMA default_cac
0760: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41  he_size;.    PRA
0770: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b  GMA synchronous;
0780: 0a 20 20 7d 0a 7d 20 7b 31 32 33 34 20 32 30 30  .  }.} {1234 200
0790: 30 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  0 0}.do_test pra
07a0: 67 6d 61 2d 31 2e 33 20 7b 0a 20 20 64 62 20 63  gma-1.3 {.  db c
07b0: 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64  lose.  sqlite3 d
07c0: 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63  b test.db.  exec
07d0: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
07e0: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
07f0: 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f   PRAGMA default_
0800: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
0810: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
0820: 75 73 3b 0a 20 20 7d 0a 7d 20 7b 32 30 30 30 20  us;.  }.} {2000 
0830: 32 30 30 30 20 32 7d 0a 64 6f 5f 74 65 73 74 20  2000 2}.do_test 
0840: 70 72 61 67 6d 61 2d 31 2e 34 20 7b 0a 20 20 65  pragma-1.4 {.  e
0850: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41  xecsql {.    PRA
0860: 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d  GMA synchronous=
0870: 4f 46 46 3b 0a 20 20 20 20 50 52 41 47 4d 41 20  OFF;.    PRAGMA 
0880: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
0890: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63  PRAGMA default_c
08a0: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50  ache_size;.    P
08b0: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
08c0: 73 3b 0a 20 20 7d 0a 7d 20 7b 32 30 30 30 20 32  s;.  }.} {2000 2
08d0: 30 30 30 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70  000 0}.do_test p
08e0: 72 61 67 6d 61 2d 31 2e 35 20 7b 0a 20 20 65 78  ragma-1.5 {.  ex
08f0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0900: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3d 34 33  MA cache_size=43
0910: 32 31 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 63  21;.    PRAGMA c
0920: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50  ache_size;.    P
0930: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
0940: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52  che_size;.    PR
0950: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
0960: 3b 0a 20 20 7d 0a 7d 20 7b 34 33 32 31 20 32 30  ;.  }.} {4321 20
0970: 30 30 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72  00 0}.do_test pr
0980: 61 67 6d 61 2d 31 2e 36 20 7b 0a 20 20 65 78 65  agma-1.6 {.  exe
0990: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
09a0: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 4f 4e  A synchronous=ON
09b0: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 63 61 63  ;.    PRAGMA cac
09c0: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41  he_size;.    PRA
09d0: 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63 68  GMA default_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 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a  MA synchronous;.
0a00: 20 20 7d 0a 7d 20 7b 34 33 32 31 20 32 30 30 30    }.} {4321 2000
0a10: 20 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67   1}.do_test prag
0a20: 6d 61 2d 31 2e 37 20 7b 0a 20 20 64 62 20 63 6c  ma-1.7 {.  db cl
0a30: 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64 62  ose.  sqlite3 db
0a40: 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73   test.db.  execs
0a50: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
0a60: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
0a70: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63  PRAGMA default_c
0a80: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50  ache_size;.    P
0a90: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
0aa0: 73 3b 0a 20 20 7d 0a 7d 20 7b 32 30 30 30 20 32  s;.  }.} {2000 2
0ab0: 30 30 30 20 32 7d 0a 64 6f 5f 74 65 73 74 20 70  000 2}.do_test p
0ac0: 72 61 67 6d 61 2d 31 2e 38 20 7b 0a 20 20 65 78  ragma-1.8 {.  ex
0ad0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0ae0: 4d 41 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65  MA default_cache
0af0: 5f 73 69 7a 65 3d 31 32 33 3b 0a 20 20 20 20 50  _size=123;.    P
0b00: 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65  RAGMA cache_size
0b10: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65 66  ;.    PRAGMA def
0b20: 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b  ault_cache_size;
0b30: 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63  .    PRAGMA sync
0b40: 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b  hronous;.  }.} {
0b50: 31 32 33 20 31 32 33 20 32 7d 0a 64 6f 5f 74 65  123 123 2}.do_te
0b60: 73 74 20 70 72 61 67 6d 61 2d 31 2e 39 2e 31 20  st pragma-1.9.1 
0b70: 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73  {.  db close.  s
0b80: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
0b90: 62 3b 20 73 65 74 20 3a 3a 44 42 20 5b 73 71 6c  b; set ::DB [sql
0ba0: 69 74 65 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f  ite3_connection_
0bb0: 70 6f 69 6e 74 65 72 20 64 62 5d 0a 20 20 65 78  pointer db].  ex
0bc0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0bd0: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
0be0: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
0bf0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
0c00: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0c10: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33  nous;.  }.} {123
0c20: 20 31 32 33 20 32 7d 0a 69 66 63 61 70 61 62 6c   123 2}.ifcapabl
0c30: 65 20 76 61 63 75 75 6d 20 7b 0a 20 20 64 6f 5f  e vacuum {.  do_
0c40: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 39 2e  test pragma-1.9.
0c50: 32 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  2 {.    execsql 
0c60: 7b 0a 20 20 20 20 20 20 56 41 43 55 55 4d 3b 0a  {.      VACUUM;.
0c70: 20 20 20 20 20 20 50 52 41 47 4d 41 20 63 61 63        PRAGMA cac
0c80: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20 50  he_size;.      P
0c90: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
0ca0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20  che_size;.      
0cb0: 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
0cc0: 75 73 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31  us;.    }.  } {1
0cd0: 32 33 20 31 32 33 20 32 7d 0a 7d 0a 64 6f 5f 74  23 123 2}.}.do_t
0ce0: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 30 20  est pragma-1.10 
0cf0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0d00: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0d10: 6e 6f 75 73 3d 4e 4f 52 4d 41 4c 3b 0a 20 20 20  nous=NORMAL;.   
0d20: 20 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69   PRAGMA cache_si
0d30: 7a 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64  ze;.    PRAGMA d
0d40: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
0d50: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79  e;.    PRAGMA sy
0d60: 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d  nchronous;.  }.}
0d70: 20 7b 31 32 33 20 31 32 33 20 31 7d 0a 64 6f 5f   {123 123 1}.do_
0d80: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 31  test pragma-1.11
0d90: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0da0: 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72     PRAGMA synchr
0db0: 6f 6e 6f 75 73 3d 46 55 4c 4c 3b 0a 20 20 20 20  onous=FULL;.    
0dc0: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
0dd0: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 64 65  e;.    PRAGMA de
0de0: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
0df0: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e  ;.    PRAGMA syn
0e00: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20  chronous;.  }.} 
0e10: 7b 31 32 33 20 31 32 33 20 32 7d 0a 64 6f 5f 74  {123 123 2}.do_t
0e20: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 32 20  est pragma-1.12 
0e30: 7b 0a 20 20 64 62 20 63 6c 6f 73 65 0a 20 20 73  {.  db close.  s
0e40: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
0e50: 62 3b 20 73 65 74 20 3a 3a 44 42 20 5b 73 71 6c  b; set ::DB [sql
0e60: 69 74 65 33 5f 63 6f 6e 6e 65 63 74 69 6f 6e 5f  ite3_connection_
0e70: 70 6f 69 6e 74 65 72 20 64 62 5d 0a 20 20 65 78  pointer db].  ex
0e80: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0e90: 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  MA cache_size;. 
0ea0: 20 20 20 50 52 41 47 4d 41 20 64 65 66 61 75 6c     PRAGMA defaul
0eb0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
0ec0: 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f    PRAGMA synchro
0ed0: 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 31 32 33  nous;.  }.} {123
0ee0: 20 31 32 33 20 32 7d 0a 0a 23 20 4d 61 6b 65 20   123 2}..# Make 
0ef0: 73 75 72 65 20 74 68 65 20 70 72 61 67 6d 61 20  sure the pragma 
0f00: 68 61 6e 64 6c 65 72 20 75 6e 64 65 72 73 74 61  handler understa
0f10: 6e 64 73 20 6e 75 6d 65 72 69 63 20 76 61 6c 75  nds numeric valu
0f20: 65 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 0a 23  es in addition.#
0f30: 20 74 6f 20 6b 65 79 77 6f 72 64 73 20 6c 69 6b   to keywords lik
0f40: 65 20 22 6f 66 66 22 20 61 6e 64 20 22 66 75 6c  e "off" and "ful
0f50: 6c 22 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 70 72  l"..#.do_test pr
0f60: 61 67 6d 61 2d 31 2e 31 33 20 7b 0a 20 20 65 78  agma-1.13 {.  ex
0f70: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
0f80: 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 30  MA synchronous=0
0f90: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e  ;.    PRAGMA syn
0fa0: 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20  chronous;.  }.} 
0fb0: 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {0}.do_test prag
0fc0: 6d 61 2d 31 2e 31 34 20 7b 0a 20 20 65 78 65 63  ma-1.14 {.  exec
0fd0: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
0fe0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3d 32 3b 0a   synchronous=2;.
0ff0: 20 20 20 20 50 52 41 47 4d 41 20 73 79 6e 63 68      PRAGMA synch
1000: 72 6f 6e 6f 75 73 3b 0a 20 20 7d 0a 7d 20 7b 32  ronous;.  }.} {2
1010: 7d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62 6c 65  }.} ;# ifcapable
1020: 20 70 61 67 65 72 5f 70 72 61 67 6d 61 73 0a 0a   pager_pragmas..
1030: 23 20 54 65 73 74 20 74 75 72 6e 69 6e 67 20 22  # Test turning "
1040: 66 6c 61 67 22 20 70 72 61 67 6d 61 73 20 6f 6e  flag" pragmas on
1050: 20 61 6e 64 20 6f 66 66 2e 0a 23 0a 64 6f 5f 74   and off..#.do_t
1060: 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31 35 20  est pragma-1.15 
1070: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1080: 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f 6c 69    PRAGMA vdbe_li
1090: 73 74 69 6e 67 3d 59 45 53 3b 0a 20 20 20 20 50  sting=YES;.    P
10a0: 52 41 47 4d 41 20 76 64 62 65 5f 6c 69 73 74 69  RAGMA vdbe_listi
10b0: 6e 67 3b 0a 20 20 7d 0a 7d 20 7b 31 7d 0a 64 6f  ng;.  }.} {1}.do
10c0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e 31  _test pragma-1.1
10d0: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  6 {.  execsql {.
10e0: 20 20 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f      PRAGMA vdbe_
10f0: 6c 69 73 74 69 6e 67 3d 4e 4f 3b 0a 20 20 20 20  listing=NO;.    
1100: 50 52 41 47 4d 41 20 76 64 62 65 5f 6c 69 73 74  PRAGMA vdbe_list
1110: 69 6e 67 3b 0a 20 20 7d 0a 7d 20 7b 30 7d 0a 64  ing;.  }.} {0}.d
1120: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 2e  o_test pragma-1.
1130: 31 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  17 {.  execsql {
1140: 0a 20 20 20 20 50 52 41 47 4d 41 20 70 61 72 73  .    PRAGMA pars
1150: 65 72 5f 74 72 61 63 65 3d 4f 4e 3b 0a 20 20 20  er_trace=ON;.   
1160: 20 50 52 41 47 4d 41 20 70 61 72 73 65 72 5f 74   PRAGMA parser_t
1170: 72 61 63 65 3d 4f 46 46 3b 0a 20 20 7d 0a 7d 20  race=OFF;.  }.} 
1180: 7b 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  {}.do_test pragm
1190: 61 2d 31 2e 31 38 20 7b 0a 20 20 65 78 65 63 73  a-1.18 {.  execs
11a0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
11b0: 62 6f 67 75 73 20 3d 20 2d 31 32 33 34 3b 20 20  bogus = -1234;  
11c0: 2d 2d 20 50 61 72 73 69 6e 67 20 6f 66 20 6e 65  -- Parsing of ne
11d0: 67 61 74 69 76 65 20 76 61 6c 75 65 73 0a 20 20  gative values.  
11e0: 7d 0a 7d 20 7b 7d 0a 0a 23 20 54 65 73 74 20 6d  }.} {}..# Test m
11f0: 6f 64 69 66 79 69 6e 67 20 74 68 65 20 73 61 66  odifying the saf
1200: 65 74 79 5f 6c 65 76 65 6c 20 6f 66 20 61 6e 20  ety_level of an 
1210: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
1220: 65 2e 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  e..do_test pragm
1230: 61 2d 32 2e 31 20 7b 0a 20 20 66 69 6c 65 20 64  a-2.1 {.  file d
1240: 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 74 65 73  elete -force tes
1250: 74 32 2e 64 62 0a 20 20 66 69 6c 65 20 64 65 6c  t2.db.  file del
1260: 65 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74 32  ete -force test2
1270: 2e 64 62 2d 6a 6f 75 72 6e 61 6c 0a 20 20 65 78  .db-journal.  ex
1280: 65 63 73 71 6c 20 7b 0a 20 20 20 20 41 54 54 41  ecsql {.    ATTA
1290: 43 48 20 27 74 65 73 74 32 2e 64 62 27 20 41 53  CH 'test2.db' AS
12a0: 20 61 75 78 3b 0a 20 20 7d 20 0a 7d 20 7b 7d 0a   aux;.  } .} {}.
12b0: 69 66 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f  ifcapable pager_
12c0: 70 72 61 67 6d 61 73 20 7b 0a 64 6f 5f 74 65 73  pragmas {.do_tes
12d0: 74 20 70 72 61 67 6d 61 2d 32 2e 32 20 7b 0a 20  t pragma-2.2 {. 
12e0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70   execsql {.    p
12f0: 72 61 67 6d 61 20 61 75 78 2e 73 79 6e 63 68 72  ragma aux.synchr
1300: 6f 6e 6f 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32  onous;.  } .} {2
1310: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
1320: 2d 32 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  -2.3 {.  execsql
1330: 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75   {.    pragma au
1340: 78 2e 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20  x.synchronous = 
1350: 4f 46 46 3b 0a 20 20 20 20 70 72 61 67 6d 61 20  OFF;.    pragma 
1360: 61 75 78 2e 73 79 6e 63 68 72 6f 6e 6f 75 73 3b  aux.synchronous;
1370: 0a 20 20 20 20 70 72 61 67 6d 61 20 73 79 6e 63  .    pragma sync
1380: 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 20 0a 7d 20  hronous;.  } .} 
1390: 7b 30 20 32 7d 0a 64 6f 5f 74 65 73 74 20 70 72  {0 2}.do_test pr
13a0: 61 67 6d 61 2d 32 2e 34 20 7b 0a 20 20 65 78 65  agma-2.4 {.  exe
13b0: 63 73 71 6c 20 7b 0a 20 20 20 20 70 72 61 67 6d  csql {.    pragm
13c0: 61 20 61 75 78 2e 73 79 6e 63 68 72 6f 6e 6f 75  a aux.synchronou
13d0: 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 70 72 61 67  s = ON;.    prag
13e0: 6d 61 20 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a  ma synchronous;.
13f0: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 73      pragma aux.s
1400: 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20 20 7d 20  ynchronous;.  } 
1410: 0a 7d 20 7b 32 20 31 7d 0a 7d 20 3b 23 20 69 66  .} {2 1}.} ;# if
1420: 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f 70 72  capable pager_pr
1430: 61 67 6d 61 73 0a 0a 23 20 43 6f 6e 73 74 72 75  agmas..# Constru
1440: 63 74 20 61 20 63 6f 72 72 75 70 74 65 64 20 69  ct a corrupted i
1450: 6e 64 65 78 20 61 6e 64 20 6d 61 6b 65 20 73 75  ndex and make su
1460: 72 65 20 74 68 65 20 69 6e 74 65 67 72 69 74 79  re the integrity
1470: 5f 63 68 65 63 6b 0a 23 20 70 72 61 67 6d 61 20  _check.# pragma 
1480: 66 69 6e 64 73 20 69 74 2e 0a 23 0a 23 20 54 68  finds it..#.# Th
1490: 65 73 65 20 74 65 73 74 73 20 77 6f 6e 27 74 20  ese tests won't 
14a0: 77 6f 72 6b 20 69 66 20 74 68 65 20 64 61 74 61  work if the data
14b0: 62 61 73 65 20 69 73 20 65 6e 63 72 79 70 74 65  base is encrypte
14c0: 64 0a 23 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  d.#.do_test prag
14d0: 6d 61 2d 33 2e 31 20 7b 0a 20 20 65 78 65 63 73  ma-3.1 {.  execs
14e0: 71 6c 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a  ql {.    BEGIN;.
14f0: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
1500: 20 74 32 28 61 2c 62 2c 63 29 3b 0a 20 20 20 20   t2(a,b,c);.    
1510: 43 52 45 41 54 45 20 49 4e 44 45 58 20 69 32 20  CREATE INDEX i2 
1520: 4f 4e 20 74 32 28 61 29 3b 0a 20 20 20 20 49 4e  ON t2(a);.    IN
1530: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
1540: 55 45 53 28 31 31 2c 32 2c 33 29 3b 0a 20 20 20  UES(11,2,3);.   
1550: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20   INSERT INTO t2 
1560: 56 41 4c 55 45 53 28 32 32 2c 33 2c 34 29 3b 0a  VALUES(22,3,4);.
1570: 20 20 20 20 43 4f 4d 4d 49 54 3b 0a 20 20 20 20      COMMIT;.    
1580: 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20  SELECT rowid, * 
1590: 66 72 6f 6d 20 74 32 3b 0a 20 20 7d 0a 7d 20 7b  from t2;.  }.} {
15a0: 31 20 31 31 20 32 20 33 20 32 20 32 32 20 33 20  1 11 2 3 2 22 3 
15b0: 34 7d 0a 69 66 20 7b 21 5b 73 71 6c 69 74 65 33  4}.if {![sqlite3
15c0: 20 2d 68 61 73 2d 63 6f 64 65 63 5d 20 26 26 20   -has-codec] && 
15d0: 24 73 71 6c 69 74 65 5f 6f 70 74 69 6f 6e 73 28  $sqlite_options(
15e0: 69 6e 74 65 67 72 69 74 79 63 6b 29 7d 20 7b 0a  integrityck)} {.
15f0: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
1600: 2d 33 2e 32 20 7b 0a 20 20 20 20 73 65 74 20 72  -3.2 {.    set r
1610: 6f 6f 74 70 61 67 65 20 5b 65 78 65 63 73 71 6c  ootpage [execsql
1620: 20 7b 53 45 4c 45 43 54 20 72 6f 6f 74 70 61 67   {SELECT rootpag
1630: 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61  e FROM sqlite_ma
1640: 73 74 65 72 20 57 48 45 52 45 20 6e 61 6d 65 3d  ster WHERE name=
1650: 27 69 32 27 7d 5d 0a 20 20 20 20 73 65 74 20 64  'i2'}].    set d
1660: 62 20 5b 62 74 72 65 65 5f 6f 70 65 6e 20 74 65  b [btree_open te
1670: 73 74 2e 64 62 20 31 30 30 20 30 5d 0a 20 20 20  st.db 100 0].   
1680: 20 62 74 72 65 65 5f 62 65 67 69 6e 5f 74 72 61   btree_begin_tra
1690: 6e 73 61 63 74 69 6f 6e 20 24 64 62 0a 20 20 20  nsaction $db.   
16a0: 20 73 65 74 20 63 20 5b 62 74 72 65 65 5f 63 75   set c [btree_cu
16b0: 72 73 6f 72 20 24 64 62 20 24 72 6f 6f 74 70 61  rsor $db $rootpa
16c0: 67 65 20 31 5d 0a 20 20 20 20 62 74 72 65 65 5f  ge 1].    btree_
16d0: 66 69 72 73 74 20 24 63 0a 20 20 20 20 62 74 72  first $c.    btr
16e0: 65 65 5f 64 65 6c 65 74 65 20 24 63 0a 20 20 20  ee_delete $c.   
16f0: 20 62 74 72 65 65 5f 63 6f 6d 6d 69 74 20 24 64   btree_commit $d
1700: 62 0a 20 20 20 20 62 74 72 65 65 5f 63 6c 6f 73  b.    btree_clos
1710: 65 20 24 64 62 0a 20 20 20 20 65 78 65 63 73 71  e $db.    execsq
1720: 6c 20 7b 50 52 41 47 4d 41 20 69 6e 74 65 67 72  l {PRAGMA integr
1730: 69 74 79 5f 63 68 65 63 6b 7d 0a 20 20 7d 20 7b  ity_check}.  } {
1740: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
1750: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20   from index i2} 
1760: 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72  {wrong # of entr
1770: 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d  ies in index i2}
1780: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
1790: 6d 61 2d 33 2e 33 20 7b 0a 20 20 20 20 65 78 65  ma-3.3 {.    exe
17a0: 63 73 71 6c 20 7b 50 52 41 47 4d 41 20 69 6e 74  csql {PRAGMA int
17b0: 65 67 72 69 74 79 5f 63 68 65 63 6b 3d 31 7d 0a  egrity_check=1}.
17c0: 20 20 7d 20 7b 7b 72 6f 77 69 64 20 31 20 6d 69    } {{rowid 1 mi
17d0: 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78  ssing from index
17e0: 20 69 32 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20   i2}}.  do_test 
17f0: 70 72 61 67 6d 61 2d 33 2e 34 20 7b 0a 20 20 20  pragma-3.4 {.   
1800: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20   execsql {.     
1810: 20 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45   ATTACH DATABASE
1820: 20 27 74 65 73 74 2e 64 62 27 20 41 53 20 74 32   'test.db' AS t2
1830: 3b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 69  ;.      PRAGMA i
1840: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 0a 20  ntegrity_check. 
1850: 20 20 20 7d 0a 20 20 7d 20 7b 7b 72 6f 77 69 64     }.  } {{rowid
1860: 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20   1 missing from 
1870: 69 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e 67  index i2} {wrong
1880: 20 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e   # of entries in
1890: 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f 77 69   index i2} {rowi
18a0: 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d  d 1 missing from
18b0: 20 69 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e   index i2} {wron
18c0: 67 20 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69  g # of entries i
18d0: 6e 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20 20 64  n index i2}}.  d
18e0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e  o_test pragma-3.
18f0: 35 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  5 {.    execsql 
1900: 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 69  {.      PRAGMA i
1910: 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3d 33  ntegrity_check=3
1920: 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7b 72 6f 77  .    }.  } {{row
1930: 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f  id 1 missing fro
1940: 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f  m index i2} {wro
1950: 6e 67 20 23 20 6f 66 20 65 6e 74 72 69 65 73 20  ng # of entries 
1960: 69 6e 20 69 6e 64 65 78 20 69 32 7d 20 7b 72 6f  in index i2} {ro
1970: 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72  wid 1 missing fr
1980: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 7d 0a 20 20  om index i2}}.  
1990: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33  do_test pragma-3
19a0: 2e 36 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .6 {.    execsql
19b0: 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20   {.      PRAGMA 
19c0: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3d  integrity_check=
19d0: 78 79 7a 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7b  xyz.    }.  } {{
19e0: 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20  rowid 1 missing 
19f0: 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b  from index i2} {
1a00: 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69  wrong # of entri
1a10: 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 20  es in index i2} 
1a20: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
1a30: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20   from index i2} 
1a40: 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72  {wrong # of entr
1a50: 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d  ies in index i2}
1a60: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
1a70: 6d 61 2d 33 2e 37 20 7b 0a 20 20 20 20 65 78 65  ma-3.7 {.    exe
1a80: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52 41  csql {.      PRA
1a90: 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68  GMA integrity_ch
1aa0: 65 63 6b 3d 30 0a 20 20 20 20 7d 0a 20 20 7d 20  eck=0.    }.  } 
1ab0: 7b 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e  {{rowid 1 missin
1ac0: 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d  g from index i2}
1ad0: 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74   {wrong # of ent
1ae0: 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32  ries in index i2
1af0: 7d 20 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69  } {rowid 1 missi
1b00: 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32  ng from index i2
1b10: 7d 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e  } {wrong # of en
1b20: 74 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69  tries in index i
1b30: 32 7d 7d 0a 0a 20 20 23 20 41 64 64 20 61 64 64  2}}..  # Add add
1b40: 69 74 69 6f 6e 61 6c 20 63 6f 72 72 75 70 74 69  itional corrupti
1b50: 6f 6e 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20  on by appending 
1b60: 75 6e 75 73 65 64 20 70 61 67 65 73 20 74 6f 20  unused pages to 
1b70: 74 68 65 20 65 6e 64 20 6f 66 0a 20 20 23 20 74  the end of.  # t
1b80: 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
1b90: 20 74 65 73 74 65 72 72 2e 64 62 0a 20 20 23 0a   testerr.db.  #.
1ba0: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
1bb0: 2d 33 2e 38 20 7b 0a 20 20 20 20 65 78 65 63 73  -3.8 {.    execs
1bc0: 71 6c 20 7b 44 45 54 41 43 48 20 74 32 7d 0a 20  ql {DETACH t2}. 
1bd0: 20 20 20 66 69 6c 65 20 64 65 6c 65 74 65 20 2d     file delete -
1be0: 66 6f 72 63 65 20 74 65 73 74 65 72 72 2e 64 62  force testerr.db
1bf0: 20 74 65 73 74 65 72 72 2e 64 62 2d 6a 6f 75 72   testerr.db-jour
1c00: 6e 61 6c 0a 20 20 20 20 73 65 74 20 6f 75 74 20  nal.    set out 
1c10: 5b 6f 70 65 6e 20 74 65 73 74 65 72 72 2e 64 62  [open testerr.db
1c20: 20 77 5d 0a 20 20 20 20 66 63 6f 6e 66 69 67 75   w].    fconfigu
1c30: 72 65 20 24 6f 75 74 20 2d 74 72 61 6e 73 6c 61  re $out -transla
1c40: 74 69 6f 6e 20 62 69 6e 61 72 79 0a 20 20 20 20  tion binary.    
1c50: 73 65 74 20 69 6e 20 5b 6f 70 65 6e 20 74 65 73  set in [open tes
1c60: 74 2e 64 62 20 72 5d 0a 20 20 20 20 66 63 6f 6e  t.db r].    fcon
1c70: 66 69 67 75 72 65 20 24 69 6e 20 2d 74 72 61 6e  figure $in -tran
1c80: 73 6c 61 74 69 6f 6e 20 62 69 6e 61 72 79 0a 20  slation binary. 
1c90: 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69     puts -nonewli
1ca0: 6e 65 20 24 6f 75 74 20 5b 72 65 61 64 20 24 69  ne $out [read $i
1cb0: 6e 5d 0a 20 20 20 20 73 65 65 6b 20 24 69 6e 20  n].    seek $in 
1cc0: 30 0a 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65  0.    puts -none
1cd0: 77 6c 69 6e 65 20 24 6f 75 74 20 5b 72 65 61 64  wline $out [read
1ce0: 20 24 69 6e 5d 0a 20 20 20 20 63 6c 6f 73 65 20   $in].    close 
1cf0: 24 69 6e 0a 20 20 20 20 63 6c 6f 73 65 20 24 6f  $in.    close $o
1d00: 75 74 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  ut.    execsql {
1d10: 52 45 49 4e 44 45 58 20 74 32 7d 0a 20 20 20 20  REINDEX t2}.    
1d20: 65 78 65 63 73 71 6c 20 7b 50 52 41 47 4d 41 20  execsql {PRAGMA 
1d30: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 7d  integrity_check}
1d40: 0a 20 20 7d 20 7b 6f 6b 7d 0a 20 20 64 6f 5f 74  .  } {ok}.  do_t
1d50: 65 73 74 20 70 72 61 67 6d 61 2d 33 2e 39 20 7b  est pragma-3.9 {
1d60: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20  .    execsql {. 
1d70: 20 20 20 20 20 41 54 54 41 43 48 20 27 74 65 73       ATTACH 'tes
1d80: 74 65 72 72 2e 64 62 27 20 41 53 20 74 32 3b 0a  terr.db' AS t2;.
1d90: 20 20 20 20 20 20 50 52 41 47 4d 41 20 69 6e 74        PRAGMA int
1da0: 65 67 72 69 74 79 5f 63 68 65 63 6b 0a 20 20 20  egrity_check.   
1db0: 20 7d 0a 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20   }.  } {{*** in 
1dc0: 64 61 74 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a  database t2 ***.
1dd0: 50 61 67 65 20 34 20 69 73 20 6e 65 76 65 72 20  Page 4 is never 
1de0: 75 73 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e  used.Page 5 is n
1df0: 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 36  ever used.Page 6
1e00: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20   is never used} 
1e10: 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67  {rowid 1 missing
1e20: 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20   from index i2} 
1e30: 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72  {wrong # of entr
1e40: 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d  ies in index i2}
1e50: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
1e60: 6d 61 2d 33 2e 31 30 20 7b 0a 20 20 20 20 65 78  ma-3.10 {.    ex
1e70: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52  ecsql {.      PR
1e80: 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63  AGMA integrity_c
1e90: 68 65 63 6b 3d 31 0a 20 20 20 20 7d 0a 20 20 7d  heck=1.    }.  }
1ea0: 20 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61   {{*** in databa
1eb0: 73 65 20 74 32 20 2a 2a 2a 0a 50 61 67 65 20 34  se t2 ***.Page 4
1ec0: 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 7d   is never used}}
1ed0: 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  .  do_test pragm
1ee0: 61 2d 33 2e 31 31 20 7b 0a 20 20 20 20 65 78 65  a-3.11 {.    exe
1ef0: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52 41  csql {.      PRA
1f00: 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68  GMA integrity_ch
1f10: 65 63 6b 3d 35 0a 20 20 20 20 7d 0a 20 20 7d 20  eck=5.    }.  } 
1f20: 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61 73  {{*** in databas
1f30: 65 20 74 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20  e t2 ***.Page 4 
1f40: 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61  is never used.Pa
1f50: 67 65 20 35 20 69 73 20 6e 65 76 65 72 20 75 73  ge 5 is never us
1f60: 65 64 0a 50 61 67 65 20 36 20 69 73 20 6e 65 76  ed.Page 6 is nev
1f70: 65 72 20 75 73 65 64 7d 20 7b 72 6f 77 69 64 20  er used} {rowid 
1f80: 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 69  1 missing from i
1f90: 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e 67 20  ndex i2} {wrong 
1fa0: 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20  # of entries in 
1fb0: 69 6e 64 65 78 20 69 32 7d 7d 0a 20 20 64 6f 5f  index i2}}.  do_
1fc0: 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e 31 32  test pragma-3.12
1fd0: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
1fe0: 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 69 6e  .      PRAGMA in
1ff0: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3d 34 0a  tegrity_check=4.
2000: 20 20 20 20 7d 0a 20 20 7d 20 7b 7b 2a 2a 2a 20      }.  } {{*** 
2010: 69 6e 20 64 61 74 61 62 61 73 65 20 74 32 20 2a  in database t2 *
2020: 2a 2a 0a 50 61 67 65 20 34 20 69 73 20 6e 65 76  **.Page 4 is nev
2030: 65 72 20 75 73 65 64 0a 50 61 67 65 20 35 20 69  er used.Page 5 i
2040: 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67  s never used.Pag
2050: 65 20 36 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 6 is never use
2060: 64 7d 20 7b 72 6f 77 69 64 20 31 20 6d 69 73 73  d} {rowid 1 miss
2070: 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69  ing from index i
2080: 32 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  2}}.  do_test pr
2090: 61 67 6d 61 2d 33 2e 31 33 20 7b 0a 20 20 20 20  agma-3.13 {.    
20a0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
20b0: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
20c0: 5f 63 68 65 63 6b 3d 33 0a 20 20 20 20 7d 0a 20  _check=3.    }. 
20d0: 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74 61   } {{*** in data
20e0: 62 61 73 65 20 74 32 20 2a 2a 2a 0a 50 61 67 65  base t2 ***.Page
20f0: 20 34 20 69 73 20 6e 65 76 65 72 20 75 73 65 64   4 is never used
2100: 0a 50 61 67 65 20 35 20 69 73 20 6e 65 76 65 72  .Page 5 is never
2110: 20 75 73 65 64 0a 50 61 67 65 20 36 20 69 73 20   used.Page 6 is 
2120: 6e 65 76 65 72 20 75 73 65 64 7d 7d 0a 20 20 64  never used}}.  d
2130: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e  o_test pragma-3.
2140: 31 34 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  14 {.    execsql
2150: 20 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20   {.      PRAGMA 
2160: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 28  integrity_check(
2170: 32 29 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 7b 2a  2).    }.  } {{*
2180: 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65 20 74  ** in database t
2190: 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73 20  2 ***.Page 4 is 
21a0: 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20  never used.Page 
21b0: 35 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d  5 is never used}
21c0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  }.  do_test prag
21d0: 6d 61 2d 33 2e 31 35 20 7b 0a 20 20 20 20 65 78  ma-3.15 {.    ex
21e0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 41 54  ecsql {.      AT
21f0: 54 41 43 48 20 27 74 65 73 74 65 72 72 2e 64 62  TACH 'testerr.db
2200: 27 20 41 53 20 74 33 3b 0a 20 20 20 20 20 20 50  ' AS t3;.      P
2210: 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f  RAGMA integrity_
2220: 63 68 65 63 6b 0a 20 20 20 20 7d 0a 20 20 7d 20  check.    }.  } 
2230: 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61 73  {{*** in databas
2240: 65 20 74 32 20 2a 2a 2a 0a 50 61 67 65 20 34 20  e t2 ***.Page 4 
2250: 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61  is never used.Pa
2260: 67 65 20 35 20 69 73 20 6e 65 76 65 72 20 75 73  ge 5 is never us
2270: 65 64 0a 50 61 67 65 20 36 20 69 73 20 6e 65 76  ed.Page 6 is nev
2280: 65 72 20 75 73 65 64 7d 20 7b 72 6f 77 69 64 20  er used} {rowid 
2290: 31 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 69  1 missing from i
22a0: 6e 64 65 78 20 69 32 7d 20 7b 77 72 6f 6e 67 20  ndex i2} {wrong 
22b0: 23 20 6f 66 20 65 6e 74 72 69 65 73 20 69 6e 20  # of entries in 
22c0: 69 6e 64 65 78 20 69 32 7d 20 7b 2a 2a 2a 20 69  index i2} {*** i
22d0: 6e 20 64 61 74 61 62 61 73 65 20 74 33 20 2a 2a  n database t3 **
22e0: 2a 0a 50 61 67 65 20 34 20 69 73 20 6e 65 76 65  *.Page 4 is neve
22f0: 72 20 75 73 65 64 0a 50 61 67 65 20 35 20 69 73  r used.Page 5 is
2300: 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65   never used.Page
2310: 20 36 20 69 73 20 6e 65 76 65 72 20 75 73 65 64   6 is never used
2320: 7d 20 7b 72 6f 77 69 64 20 31 20 6d 69 73 73 69  } {rowid 1 missi
2330: 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 69 32  ng from index i2
2340: 7d 20 7b 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e  } {wrong # of en
2350: 74 72 69 65 73 20 69 6e 20 69 6e 64 65 78 20 69  tries in index i
2360: 32 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  2}}.  do_test pr
2370: 61 67 6d 61 2d 33 2e 31 36 20 7b 0a 20 20 20 20  agma-3.16 {.    
2380: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
2390: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
23a0: 5f 63 68 65 63 6b 28 39 29 0a 20 20 20 20 7d 0a  _check(9).    }.
23b0: 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74    } {{*** in dat
23c0: 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a 50 61 67  abase t2 ***.Pag
23d0: 65 20 34 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 4 is never use
23e0: 64 0a 50 61 67 65 20 35 20 69 73 20 6e 65 76 65  d.Page 5 is neve
23f0: 72 20 75 73 65 64 0a 50 61 67 65 20 36 20 69 73  r used.Page 6 is
2400: 20 6e 65 76 65 72 20 75 73 65 64 7d 20 7b 72 6f   never used} {ro
2410: 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72  wid 1 missing fr
2420: 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b 77 72  om index i2} {wr
2430: 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69 65 73  ong # of entries
2440: 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 20 7b 2a   in index i2} {*
2450: 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65 20 74  ** in database t
2460: 33 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69 73 20  3 ***.Page 4 is 
2470: 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67 65 20  never used.Page 
2480: 35 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 0a  5 is never used.
2490: 50 61 67 65 20 36 20 69 73 20 6e 65 76 65 72 20  Page 6 is never 
24a0: 75 73 65 64 7d 20 7b 72 6f 77 69 64 20 31 20 6d  used} {rowid 1 m
24b0: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
24c0: 78 20 69 32 7d 7d 0a 20 20 64 6f 5f 74 65 73 74  x i2}}.  do_test
24d0: 20 70 72 61 67 6d 61 2d 33 2e 31 37 20 7b 0a 20   pragma-3.17 {. 
24e0: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
24f0: 20 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72     PRAGMA integr
2500: 69 74 79 5f 63 68 65 63 6b 3d 37 0a 20 20 20 20  ity_check=7.    
2510: 7d 0a 20 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20 64  }.  } {{*** in d
2520: 61 74 61 62 61 73 65 20 74 32 20 2a 2a 2a 0a 50  atabase t2 ***.P
2530: 61 67 65 20 34 20 69 73 20 6e 65 76 65 72 20 75  age 4 is never u
2540: 73 65 64 0a 50 61 67 65 20 35 20 69 73 20 6e 65  sed.Page 5 is ne
2550: 76 65 72 20 75 73 65 64 0a 50 61 67 65 20 36 20  ver used.Page 6 
2560: 69 73 20 6e 65 76 65 72 20 75 73 65 64 7d 20 7b  is never used} {
2570: 72 6f 77 69 64 20 31 20 6d 69 73 73 69 6e 67 20  rowid 1 missing 
2580: 66 72 6f 6d 20 69 6e 64 65 78 20 69 32 7d 20 7b  from index i2} {
2590: 77 72 6f 6e 67 20 23 20 6f 66 20 65 6e 74 72 69  wrong # of entri
25a0: 65 73 20 69 6e 20 69 6e 64 65 78 20 69 32 7d 20  es in index i2} 
25b0: 7b 2a 2a 2a 20 69 6e 20 64 61 74 61 62 61 73 65  {*** in database
25c0: 20 74 33 20 2a 2a 2a 0a 50 61 67 65 20 34 20 69   t3 ***.Page 4 i
25d0: 73 20 6e 65 76 65 72 20 75 73 65 64 0a 50 61 67  s never used.Pag
25e0: 65 20 35 20 69 73 20 6e 65 76 65 72 20 75 73 65  e 5 is never use
25f0: 64 7d 7d 0a 20 20 64 6f 5f 74 65 73 74 20 70 72  d}}.  do_test pr
2600: 61 67 6d 61 2d 33 2e 31 38 20 7b 0a 20 20 20 20  agma-3.18 {.    
2610: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
2620: 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79  PRAGMA integrity
2630: 5f 63 68 65 63 6b 3d 34 0a 20 20 20 20 7d 0a 20  _check=4.    }. 
2640: 20 7d 20 7b 7b 2a 2a 2a 20 69 6e 20 64 61 74 61   } {{*** in data
2650: 62 61 73 65 20 74 32 20 2a 2a 2a 0a 50 61 67 65  base t2 ***.Page
2660: 20 34 20 69 73 20 6e 65 76 65 72 20 75 73 65 64   4 is never used
2670: 0a 50 61 67 65 20 35 20 69 73 20 6e 65 76 65 72  .Page 5 is never
2680: 20 75 73 65 64 0a 50 61 67 65 20 36 20 69 73 20   used.Page 6 is 
2690: 6e 65 76 65 72 20 75 73 65 64 7d 20 7b 72 6f 77  never used} {row
26a0: 69 64 20 31 20 6d 69 73 73 69 6e 67 20 66 72 6f  id 1 missing fro
26b0: 6d 20 69 6e 64 65 78 20 69 32 7d 7d 0a 7d 0a 64  m index i2}}.}.d
26c0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 33 2e  o_test pragma-3.
26d0: 39 39 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  99 {.  catchsql 
26e0: 7b 44 45 54 41 43 48 20 74 33 7d 0a 20 20 63 61  {DETACH t3}.  ca
26f0: 74 63 68 73 71 6c 20 7b 44 45 54 41 43 48 20 74  tchsql {DETACH t
2700: 32 7d 0a 20 20 66 69 6c 65 20 64 65 6c 65 74 65  2}.  file delete
2710: 20 2d 66 6f 72 63 65 20 74 65 73 74 65 72 72 2e   -force testerr.
2720: 64 62 20 74 65 73 74 65 72 72 2e 64 62 2d 6a 6f  db testerr.db-jo
2730: 75 72 6e 61 6c 0a 20 20 63 61 74 63 68 73 71 6c  urnal.  catchsql
2740: 20 7b 44 52 4f 50 20 49 4e 44 45 58 20 69 32 7d   {DROP INDEX i2}
2750: 0a 7d 20 7b 30 20 7b 7d 7d 0a 0a 23 20 54 65 73  .} {0 {}}..# Tes
2760: 74 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20  t modifying the 
2770: 63 61 63 68 65 5f 73 69 7a 65 20 6f 66 20 61 6e  cache_size of an
2780: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
2790: 73 65 2e 0a 69 66 63 61 70 61 62 6c 65 20 70 61  se..ifcapable pa
27a0: 67 65 72 5f 70 72 61 67 6d 61 73 20 7b 0a 64 6f  ger_pragmas {.do
27b0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 34 2e 31  _test pragma-4.1
27c0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
27d0: 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 63 61     pragma aux.ca
27e0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70 72  che_size;.    pr
27f0: 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75 6c 74  agma aux.default
2800: 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 7d  _cache_size;.  }
2810: 20 0a 7d 20 7b 32 30 30 30 20 32 30 30 30 7d 0a   .} {2000 2000}.
2820: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 34  do_test pragma-4
2830: 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .2 {.  execsql {
2840: 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e  .    pragma aux.
2850: 63 61 63 68 65 5f 73 69 7a 65 20 3d 20 35 30 3b  cache_size = 50;
2860: 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e  .    pragma aux.
2870: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
2880: 70 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75  pragma aux.defau
2890: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20  lt_cache_size;. 
28a0: 20 7d 20 0a 7d 20 7b 35 30 20 32 30 30 30 7d 0a   } .} {50 2000}.
28b0: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 34  do_test pragma-4
28c0: 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .3 {.  execsql {
28d0: 0a 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e  .    pragma aux.
28e0: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
28f0: 7a 65 20 3d 20 34 35 36 3b 0a 20 20 20 20 70 72  ze = 456;.    pr
2900: 61 67 6d 61 20 61 75 78 2e 63 61 63 68 65 5f 73  agma aux.cache_s
2910: 69 7a 65 3b 0a 20 20 20 20 70 72 61 67 6d 61 20  ize;.    pragma 
2920: 61 75 78 2e 64 65 66 61 75 6c 74 5f 63 61 63 68  aux.default_cach
2930: 65 5f 73 69 7a 65 3b 0a 20 20 7d 20 0a 7d 20 7b  e_size;.  } .} {
2940: 34 35 36 20 34 35 36 7d 0a 64 6f 5f 74 65 73 74  456 456}.do_test
2950: 20 70 72 61 67 6d 61 2d 34 2e 34 20 7b 0a 20 20   pragma-4.4 {.  
2960: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 70 72  execsql {.    pr
2970: 61 67 6d 61 20 63 61 63 68 65 5f 73 69 7a 65 3b  agma cache_size;
2980: 0a 20 20 20 20 70 72 61 67 6d 61 20 64 65 66 61  .    pragma defa
2990: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a  ult_cache_size;.
29a0: 20 20 7d 20 0a 7d 20 7b 31 32 33 20 31 32 33 7d    } .} {123 123}
29b0: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
29c0: 34 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  4.5 {.  execsql 
29d0: 7b 0a 20 20 20 20 44 45 54 41 43 48 20 61 75 78  {.    DETACH aux
29e0: 3b 0a 20 20 20 20 41 54 54 41 43 48 20 27 74 65  ;.    ATTACH 'te
29f0: 73 74 33 2e 64 62 27 20 41 53 20 61 75 78 3b 0a  st3.db' AS aux;.
2a00: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 63      pragma aux.c
2a10: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70  ache_size;.    p
2a20: 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75 6c  ragma aux.defaul
2a30: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
2a40: 7d 20 0a 7d 20 7b 32 30 30 30 20 32 30 30 30 7d  } .} {2000 2000}
2a50: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
2a60: 34 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  4.6 {.  execsql 
2a70: 7b 0a 20 20 20 20 44 45 54 41 43 48 20 61 75 78  {.    DETACH aux
2a80: 3b 0a 20 20 20 20 41 54 54 41 43 48 20 27 74 65  ;.    ATTACH 'te
2a90: 73 74 32 2e 64 62 27 20 41 53 20 61 75 78 3b 0a  st2.db' AS aux;.
2aa0: 20 20 20 20 70 72 61 67 6d 61 20 61 75 78 2e 63      pragma aux.c
2ab0: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 70  ache_size;.    p
2ac0: 72 61 67 6d 61 20 61 75 78 2e 64 65 66 61 75 6c  ragma aux.defaul
2ad0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20  t_cache_size;.  
2ae0: 7d 20 0a 7d 20 7b 34 35 36 20 34 35 36 7d 0a 7d  } .} {456 456}.}
2af0: 20 3b 23 20 69 66 63 61 70 61 62 6c 65 20 70 61   ;# ifcapable pa
2b00: 67 65 72 5f 70 72 61 67 6d 61 73 0a 0a 23 20 54  ger_pragmas..# T
2b10: 65 73 74 20 74 68 61 74 20 6d 6f 64 69 66 79 69  est that modifyi
2b20: 6e 67 20 74 68 65 20 73 79 6e 63 2d 6c 65 76 65  ng the sync-leve
2b30: 6c 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  l in the middle 
2b40: 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  of a transaction
2b50: 20 69 73 0a 23 20 64 69 73 61 6c 6c 6f 77 65 64   is.# disallowed
2b60: 2e 0a 69 66 63 61 70 61 62 6c 65 20 70 61 67 65  ..ifcapable page
2b70: 72 5f 70 72 61 67 6d 61 73 20 7b 0a 64 6f 5f 74  r_pragmas {.do_t
2b80: 65 73 74 20 70 72 61 67 6d 61 2d 35 2e 30 20 7b  est pragma-5.0 {
2b90: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
2ba0: 20 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e   pragma synchron
2bb0: 6f 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32 7d 0a  ous;.  } .} {2}.
2bc0: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 35  do_test pragma-5
2bd0: 2e 31 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  .1 {.  catchsql 
2be0: 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a 20 20 20  {.    BEGIN;.   
2bf0: 20 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f 6e   pragma synchron
2c00: 6f 75 73 20 3d 20 4f 46 46 3b 0a 20 20 7d 20 0a  ous = OFF;.  } .
2c10: 7d 20 7b 31 20 7b 53 61 66 65 74 79 20 6c 65 76  } {1 {Safety lev
2c20: 65 6c 20 6d 61 79 20 6e 6f 74 20 62 65 20 63 68  el may not be ch
2c30: 61 6e 67 65 64 20 69 6e 73 69 64 65 20 61 20 74  anged inside a t
2c40: 72 61 6e 73 61 63 74 69 6f 6e 7d 7d 0a 64 6f 5f  ransaction}}.do_
2c50: 74 65 73 74 20 70 72 61 67 6d 61 2d 35 2e 32 20  test pragma-5.2 
2c60: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
2c70: 20 20 70 72 61 67 6d 61 20 73 79 6e 63 68 72 6f    pragma synchro
2c80: 6e 6f 75 73 3b 0a 20 20 7d 20 0a 7d 20 7b 32 7d  nous;.  } .} {2}
2c90: 0a 63 61 74 63 68 73 71 6c 20 7b 43 4f 4d 4d 49  .catchsql {COMMI
2ca0: 54 3b 7d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62  T;}.} ;# ifcapab
2cb0: 6c 65 20 70 61 67 65 72 5f 70 72 61 67 6d 61 73  le pager_pragmas
2cc0: 0a 0a 23 20 54 65 73 74 20 73 63 68 65 6d 61 2d  ..# Test schema-
2cd0: 71 75 65 72 79 20 70 72 61 67 6d 61 73 0a 23 0a  query pragmas.#.
2ce0: 69 66 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61  ifcapable schema
2cf0: 5f 70 72 61 67 6d 61 73 20 7b 0a 69 66 63 61 70  _pragmas {.ifcap
2d00: 61 62 6c 65 20 74 65 6d 70 64 62 20 7b 0a 20 20  able tempdb {.  
2d10: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 36  do_test pragma-6
2d20: 2e 31 20 7b 0a 20 20 20 20 73 65 74 20 72 65 73  .1 {.    set res
2d30: 20 7b 7d 0a 20 20 20 20 65 78 65 63 73 71 6c 20   {}.    execsql 
2d40: 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73  {SELECT * FROM s
2d50: 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73 74 65  qlite_temp_maste
2d60: 72 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 7b  r}.    foreach {
2d70: 69 64 78 20 6e 61 6d 65 20 66 69 6c 65 7d 20 5b  idx name file} [
2d80: 65 78 65 63 73 71 6c 20 7b 70 72 61 67 6d 61 20  execsql {pragma 
2d90: 64 61 74 61 62 61 73 65 5f 6c 69 73 74 7d 5d 20  database_list}] 
2da0: 7b 0a 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20  {.      lappend 
2db0: 72 65 73 20 24 69 64 78 20 24 6e 61 6d 65 0a 20  res $idx $name. 
2dc0: 20 20 20 7d 0a 20 20 20 20 73 65 74 20 72 65 73     }.    set res
2dd0: 0a 20 20 7d 20 7b 30 20 6d 61 69 6e 20 31 20 74  .  } {0 main 1 t
2de0: 65 6d 70 20 32 20 61 75 78 7d 0a 7d 0a 64 6f 5f  emp 2 aux}.}.do_
2df0: 74 65 73 74 20 70 72 61 67 6d 61 2d 36 2e 32 20  test pragma-6.2 
2e00: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
2e10: 20 20 70 72 61 67 6d 61 20 74 61 62 6c 65 5f 69    pragma table_i
2e20: 6e 66 6f 28 74 32 29 0a 20 20 7d 0a 7d 20 7b 30  nfo(t2).  }.} {0
2e30: 20 61 20 7b 7d 20 30 20 7b 7d 20 30 20 31 20 62   a {} 0 {} 0 1 b
2e40: 20 7b 7d 20 30 20 7b 7d 20 30 20 32 20 63 20 7b   {} 0 {} 0 2 c {
2e50: 7d 20 30 20 7b 7d 20 30 7d 0a 64 62 20 6e 75 6c  } 0 {} 0}.db nul
2e60: 6c 76 61 6c 75 65 20 3c 3c 4e 55 4c 4c 3e 3e 0a  lvalue <<NULL>>.
2e70: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 36  do_test pragma-6
2e80: 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  .2.2 {.  execsql
2e90: 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41   {.    CREATE TA
2ea0: 42 4c 45 20 74 35 28 0a 20 20 20 20 20 20 61 20  BLE t5(.      a 
2eb0: 54 45 58 54 20 44 45 46 41 55 4c 54 20 43 55 52  TEXT DEFAULT CUR
2ec0: 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d 50 2c 20  RENT_TIMESTAMP, 
2ed0: 0a 20 20 20 20 20 20 62 20 44 45 46 41 55 4c 54  .      b DEFAULT
2ee0: 20 28 35 2b 33 29 2c 0a 20 20 20 20 20 20 63 20   (5+3),.      c 
2ef0: 54 45 58 54 2c 0a 20 20 20 20 20 20 64 20 49 4e  TEXT,.      d IN
2f00: 54 45 47 45 52 20 44 45 46 41 55 4c 54 20 4e 55  TEGER DEFAULT NU
2f10: 4c 4c 2c 0a 20 20 20 20 20 20 65 20 54 45 58 54  LL,.      e TEXT
2f20: 20 44 45 46 41 55 4c 54 20 27 27 0a 20 20 20 20   DEFAULT ''.    
2f30: 29 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 61  );.    PRAGMA ta
2f40: 62 6c 65 5f 69 6e 66 6f 28 74 35 29 3b 0a 20 20  ble_info(t5);.  
2f50: 7d 0a 7d 20 7b 30 20 61 20 54 45 58 54 20 30 20  }.} {0 a TEXT 0 
2f60: 43 55 52 52 45 4e 54 5f 54 49 4d 45 53 54 41 4d  CURRENT_TIMESTAM
2f70: 50 20 30 20 31 20 62 20 7b 7d 20 30 20 35 2b 33  P 0 1 b {} 0 5+3
2f80: 20 30 20 32 20 63 20 54 45 58 54 20 30 20 3c 3c   0 2 c TEXT 0 <<
2f90: 4e 55 4c 4c 3e 3e 20 30 20 33 20 64 20 49 4e 54  NULL>> 0 3 d INT
2fa0: 45 47 45 52 20 30 20 4e 55 4c 4c 20 30 20 34 20  EGER 0 NULL 0 4 
2fb0: 65 20 54 45 58 54 20 30 20 27 27 20 30 7d 0a 64  e TEXT 0 '' 0}.d
2fc0: 62 20 6e 75 6c 6c 76 61 6c 75 65 20 7b 7d 0a 69  b nullvalue {}.i
2fd0: 66 63 61 70 61 62 6c 65 20 7b 66 6f 72 65 69 67  fcapable {foreig
2fe0: 6e 6b 65 79 7d 20 7b 0a 20 20 64 6f 5f 74 65 73  nkey} {.  do_tes
2ff0: 74 20 70 72 61 67 6d 61 2d 36 2e 33 20 7b 0a 20  t pragma-6.3 {. 
3000: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
3010: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
3020: 74 33 28 61 20 69 6e 74 20 72 65 66 65 72 65 6e  t3(a int referen
3030: 63 65 73 20 74 32 28 62 29 2c 20 62 20 55 4e 49  ces t2(b), b UNI
3040: 51 55 45 29 3b 0a 20 20 20 20 20 20 70 72 61 67  QUE);.      prag
3050: 6d 61 20 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 6c  ma foreign_key_l
3060: 69 73 74 28 74 33 29 3b 0a 20 20 20 20 7d 0a 20  ist(t3);.    }. 
3070: 20 7d 20 7b 30 20 30 20 74 32 20 61 20 62 7d 0a   } {0 0 t2 a b}.
3080: 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61    do_test pragma
3090: 2d 36 2e 34 20 7b 0a 20 20 20 20 65 78 65 63 73  -6.4 {.    execs
30a0: 71 6c 20 7b 0a 20 20 20 20 20 20 70 72 61 67 6d  ql {.      pragm
30b0: 61 20 69 6e 64 65 78 5f 6c 69 73 74 28 74 33 29  a index_list(t3)
30c0: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 30 20 73  ;.    }.  } {0 s
30d0: 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78 5f  qlite_autoindex_
30e0: 74 33 5f 31 20 31 7d 0a 7d 0a 69 66 63 61 70 61  t3_1 1}.}.ifcapa
30f0: 62 6c 65 20 7b 21 66 6f 72 65 69 67 6e 6b 65 79  ble {!foreignkey
3100: 7d 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 43  } {.  execsql {C
3110: 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61  REATE TABLE t3(a
3120: 2c 62 20 55 4e 49 51 55 45 29 7d 0a 7d 0a 64 6f  ,b UNIQUE)}.}.do
3130: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 36 2e 35  _test pragma-6.5
3140: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
3150: 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20     CREATE INDEX 
3160: 74 33 69 31 20 4f 4e 20 74 33 28 61 2c 62 29 3b  t3i1 ON t3(a,b);
3170: 0a 20 20 20 20 70 72 61 67 6d 61 20 69 6e 64 65  .    pragma inde
3180: 78 5f 69 6e 66 6f 28 74 33 69 31 29 3b 0a 20 20  x_info(t3i1);.  
3190: 7d 0a 7d 20 7b 30 20 30 20 61 20 31 20 31 20 62  }.} {0 0 a 1 1 b
31a0: 7d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62 6c 65  }.} ;# ifcapable
31b0: 20 73 63 68 65 6d 61 5f 70 72 61 67 6d 61 73 0a   schema_pragmas.
31c0: 23 20 4d 69 73 63 65 6c 6c 61 6e 65 6f 75 73 20  # Miscellaneous 
31d0: 74 65 73 74 73 0a 23 0a 69 66 63 61 70 61 62 6c  tests.#.ifcapabl
31e0: 65 20 73 63 68 65 6d 61 5f 70 72 61 67 6d 61 73  e schema_pragmas
31f0: 20 7b 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d   {.do_test pragm
3200: 61 2d 37 2e 31 20 7b 0a 20 20 23 20 4d 61 6b 65  a-7.1 {.  # Make
3210: 20 73 75 72 65 20 61 20 70 72 61 67 6d 61 20 6b   sure a pragma k
3220: 6e 6f 77 73 20 74 6f 20 72 65 61 64 20 74 68 65  nows to read the
3230: 20 73 63 68 65 6d 61 20 69 66 20 69 74 20 6e 65   schema if it ne
3240: 65 64 73 20 74 6f 0a 20 20 64 62 20 63 6c 6f 73  eds to.  db clos
3250: 65 0a 20 20 73 71 6c 69 74 65 33 20 64 62 20 74  e.  sqlite3 db t
3260: 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73 71 6c  est.db.  execsql
3270: 20 7b 0a 20 20 20 20 70 72 61 67 6d 61 20 69 6e   {.    pragma in
3280: 64 65 78 5f 6c 69 73 74 28 74 33 29 3b 0a 20 20  dex_list(t3);.  
3290: 7d 0a 7d 20 7b 30 20 74 33 69 31 20 30 20 31 20  }.} {0 t3i1 0 1 
32a0: 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78  sqlite_autoindex
32b0: 5f 74 33 5f 31 20 31 7d 0a 7d 20 3b 23 20 69 66  _t3_1 1}.} ;# if
32c0: 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61 5f 70  capable schema_p
32d0: 72 61 67 6d 61 73 0a 69 66 63 61 70 61 62 6c 65  ragmas.ifcapable
32e0: 20 7b 75 74 66 31 36 7d 20 7b 0a 20 20 64 6f 5f   {utf16} {.  do_
32f0: 74 65 73 74 20 70 72 61 67 6d 61 2d 37 2e 32 20  test pragma-7.2 
3300: 7b 0a 20 20 20 20 64 62 20 63 6c 6f 73 65 0a 20  {.    db close. 
3310: 20 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65     sqlite3 db te
3320: 73 74 2e 64 62 0a 20 20 20 20 63 61 74 63 68 73  st.db.    catchs
3330: 71 6c 20 7b 0a 20 20 20 20 20 20 70 72 61 67 6d  ql {.      pragm
3340: 61 20 65 6e 63 6f 64 69 6e 67 3d 62 6f 67 75 73  a encoding=bogus
3350: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 7b  ;.    }.  } {1 {
3360: 75 6e 73 75 70 70 6f 72 74 65 64 20 65 6e 63 6f  unsupported enco
3370: 64 69 6e 67 3a 20 62 6f 67 75 73 7d 7d 0a 7d 0a  ding: bogus}}.}.
3380: 69 66 63 61 70 61 62 6c 65 20 74 65 6d 70 64 62  ifcapable tempdb
3390: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61   {.  do_test pra
33a0: 67 6d 61 2d 37 2e 33 20 7b 0a 20 20 20 20 64 62  gma-7.3 {.    db
33b0: 20 63 6c 6f 73 65 0a 20 20 20 20 73 71 6c 69 74   close.    sqlit
33c0: 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a 20 20  e3 db test.db.  
33d0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
33e0: 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 5f 73 74    pragma lock_st
33f0: 61 74 75 73 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  atus;.    }.  } 
3400: 7b 6d 61 69 6e 20 75 6e 6c 6f 63 6b 65 64 20 74  {main unlocked t
3410: 65 6d 70 20 63 6c 6f 73 65 64 7d 0a 7d 20 65 6c  emp closed}.} el
3420: 73 65 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70  se {.  do_test p
3430: 72 61 67 6d 61 2d 37 2e 33 20 7b 0a 20 20 20 20  ragma-7.3 {.    
3440: 64 62 20 63 6c 6f 73 65 0a 20 20 20 20 73 71 6c  db close.    sql
3450: 69 74 65 33 20 64 62 20 74 65 73 74 2e 64 62 0a  ite3 db test.db.
3460: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
3470: 20 20 20 20 70 72 61 67 6d 61 20 6c 6f 63 6b 5f      pragma lock_
3480: 73 74 61 74 75 73 3b 0a 20 20 20 20 7d 0a 20 20  status;.    }.  
3490: 7d 20 7b 6d 61 69 6e 20 75 6e 6c 6f 63 6b 65 64  } {main unlocked
34a0: 7d 0a 7d 0a 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d  }.}...#---------
34b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
34c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
34d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
34e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
34f0: 54 65 73 74 20 63 61 73 65 73 20 70 72 61 67 6d  Test cases pragm
3500: 61 2d 38 2e 2a 20 74 65 73 74 20 74 68 65 20 22  a-8.* test the "
3510: 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f 76 65  PRAGMA schema_ve
3520: 72 73 69 6f 6e 22 20 61 6e 64 20 22 50 52 41 47  rsion" and "PRAG
3530: 4d 41 0a 23 20 75 73 65 72 5f 76 65 72 73 69 6f  MA.# user_versio
3540: 6e 22 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 23  n" statements..#
3550: 0a 23 20 70 72 61 67 6d 61 2d 38 2e 31 3a 20 50  .# pragma-8.1: P
3560: 52 41 47 4d 41 20 73 63 68 65 6d 61 5f 76 65 72  RAGMA schema_ver
3570: 73 69 6f 6e 0a 23 20 70 72 61 67 6d 61 2d 38 2e  sion.# pragma-8.
3580: 32 3a 20 50 52 41 47 4d 41 20 75 73 65 72 5f 76  2: PRAGMA user_v
3590: 65 72 73 69 6f 6e 0a 23 0a 0a 69 66 63 61 70 61  ersion.#..ifcapa
35a0: 62 6c 65 20 73 63 68 65 6d 61 5f 76 65 72 73 69  ble schema_versi
35b0: 6f 6e 20 7b 0a 0a 23 20 46 69 72 73 74 20 63 68  on {..# First ch
35c0: 65 63 6b 20 74 68 61 74 20 77 65 20 63 61 6e 20  eck that we can 
35d0: 73 65 74 20 74 68 65 20 73 63 68 65 6d 61 20 76  set the schema v
35e0: 65 72 73 69 6f 6e 20 61 6e 64 20 74 68 65 6e 20  ersion and then 
35f0: 72 65 74 72 69 65 76 65 20 74 68 65 0a 23 20 73  retrieve the.# s
3600: 61 6d 65 20 76 61 6c 75 65 2e 0a 64 6f 5f 74 65  ame value..do_te
3610: 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31 20  st pragma-8.1.1 
3620: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
3630: 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f    PRAGMA schema_
3640: 76 65 72 73 69 6f 6e 20 3d 20 31 30 35 3b 0a 20  version = 105;. 
3650: 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20   }.} {}.do_test 
3660: 70 72 61 67 6d 61 2d 38 2e 31 2e 32 20 7b 0a 20  pragma-8.1.2 {. 
3670: 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20   execsql2 {.    
3680: 50 52 41 47 4d 41 20 73 63 68 65 6d 61 5f 76 65  PRAGMA schema_ve
3690: 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20 7b 73 63  rsion;.  }.} {sc
36a0: 68 65 6d 61 5f 76 65 72 73 69 6f 6e 20 31 30 35  hema_version 105
36b0: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
36c0: 2d 38 2e 31 2e 33 20 7b 0a 20 20 65 78 65 63 73  -8.1.3 {.  execs
36d0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
36e0: 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 20 3d  schema_version =
36f0: 20 31 30 36 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64   106;.  }.} {}.d
3700: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
3710: 31 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.4 {.  execsql 
3720: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 73 63 68  {.    PRAGMA sch
3730: 65 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d  ema_version;.  }
3740: 0a 7d 20 31 30 36 0a 0a 23 20 43 68 65 63 6b 20  .} 106..# Check 
3750: 74 68 61 74 20 63 72 65 61 74 69 6e 67 20 61 20  that creating a 
3760: 74 61 62 6c 65 20 6d 6f 64 69 66 69 65 73 20 74  table modifies t
3770: 68 65 20 73 63 68 65 6d 61 2d 76 65 72 73 69 6f  he schema-versio
3780: 6e 20 28 74 68 69 73 20 69 73 20 72 65 61 6c 6c  n (this is reall
3790: 79 0a 23 20 74 6f 20 76 65 72 69 66 79 20 74 68  y.# to verify th
37a0: 61 74 20 74 68 65 20 76 61 6c 75 65 20 62 65 69  at the value bei
37b0: 6e 67 20 72 65 61 64 20 69 73 20 69 6e 20 66 61  ng read is in fa
37c0: 63 74 20 74 68 65 20 73 63 68 65 6d 61 20 76 65  ct the schema ve
37d0: 72 73 69 6f 6e 29 2e 0a 64 6f 5f 74 65 73 74 20  rsion)..do_test 
37e0: 70 72 61 67 6d 61 2d 38 2e 31 2e 35 20 7b 0a 20  pragma-8.1.5 {. 
37f0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43   execsql {.    C
3800: 52 45 41 54 45 20 54 41 42 4c 45 20 74 34 28 61  REATE TABLE t4(a
3810: 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 49 4e 53  , b, c);.    INS
3820: 45 52 54 20 49 4e 54 4f 20 74 34 20 56 41 4c 55  ERT INTO t4 VALU
3830: 45 53 28 31 2c 20 32 2c 20 33 29 3b 0a 20 20 20  ES(1, 2, 3);.   
3840: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
3850: 34 3b 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 7d  4;.  }.} {1 2 3}
3860: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
3870: 38 2e 31 2e 36 20 7b 0a 20 20 65 78 65 63 73 71  8.1.6 {.  execsq
3880: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 73  l {.    PRAGMA s
3890: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20  chema_version;. 
38a0: 20 7d 0a 7d 20 31 30 37 0a 0a 23 20 4e 6f 77 20   }.} 107..# Now 
38b0: 6f 70 65 6e 20 61 20 73 65 63 6f 6e 64 20 63 6f  open a second co
38c0: 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20  nnection to the 
38d0: 64 61 74 61 62 61 73 65 2e 20 45 6e 73 75 72 65  database. Ensure
38e0: 20 74 68 61 74 20 63 68 61 6e 67 69 6e 67 20 74   that changing t
38f0: 68 65 0a 23 20 73 63 68 65 6d 61 2d 76 65 72 73  he.# schema-vers
3900: 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 20 66 69  ion using the fi
3910: 72 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 66  rst connection f
3920: 6f 72 63 65 73 20 74 68 65 20 73 65 63 6f 6e 64  orces the second
3930: 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 23 20 74 6f   connection.# to
3940: 20 72 65 6c 6f 61 64 20 74 68 65 20 73 63 68 65   reload the sche
3950: 6d 61 2e 20 54 68 69 73 20 68 61 73 20 74 6f 20  ma. This has to 
3960: 62 65 20 64 6f 6e 65 20 75 73 69 6e 67 20 74 68  be done using th
3970: 65 20 43 2d 41 50 49 20 74 65 73 74 20 66 75 6e  e C-API test fun
3980: 63 74 69 6f 6e 73 2c 0a 23 20 62 65 63 61 75 73  ctions,.# becaus
3990: 65 20 74 68 65 20 54 43 4c 20 41 50 49 20 61 63  e the TCL API ac
39a0: 63 6f 75 6e 74 73 20 66 6f 72 20 53 43 48 45 4d  counts for SCHEM
39b0: 41 5f 45 52 52 4f 52 20 61 6e 64 20 72 65 74 72  A_ERROR and retr
39c0: 69 65 73 20 74 68 65 20 71 75 65 72 79 2e 0a 64  ies the query..d
39d0: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
39e0: 31 2e 37 20 7b 0a 20 20 73 71 6c 69 74 65 33 20  1.7 {.  sqlite3 
39f0: 64 62 32 20 74 65 73 74 2e 64 62 3b 20 73 65 74  db2 test.db; set
3a00: 20 3a 3a 44 42 32 20 5b 73 71 6c 69 74 65 33 5f   ::DB2 [sqlite3_
3a10: 63 6f 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e 74  connection_point
3a20: 65 72 20 64 62 32 5d 0a 20 20 65 78 65 63 73 71  er db2].  execsq
3a30: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  l {.    SELECT *
3a40: 20 46 52 4f 4d 20 74 34 3b 0a 20 20 7d 20 64 62   FROM t4;.  } db
3a50: 32 0a 7d 20 7b 31 20 32 20 33 7d 0a 64 6f 5f 74  2.} {1 2 3}.do_t
3a60: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 38  est pragma-8.1.8
3a70: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
3a80: 20 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61     PRAGMA schema
3a90: 5f 76 65 72 73 69 6f 6e 20 3d 20 31 30 38 3b 0a  _version = 108;.
3aa0: 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74    }.} {}.do_test
3ab0: 20 70 72 61 67 6d 61 2d 38 2e 31 2e 39 20 7b 0a   pragma-8.1.9 {.
3ac0: 20 20 73 65 74 20 3a 3a 53 54 4d 54 20 5b 73 71    set ::STMT [sq
3ad0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 24 3a  lite3_prepare $:
3ae0: 3a 44 42 32 20 22 53 45 4c 45 43 54 20 2a 20 46  :DB2 "SELECT * F
3af0: 52 4f 4d 20 74 34 22 20 2d 31 20 44 55 4d 4d 59  ROM t4" -1 DUMMY
3b00: 5d 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ].  sqlite3_step
3b10: 20 24 3a 3a 53 54 4d 54 0a 7d 20 53 51 4c 49 54   $::STMT.} SQLIT
3b20: 45 5f 45 52 52 4f 52 0a 64 6f 5f 74 65 73 74 20  E_ERROR.do_test 
3b30: 70 72 61 67 6d 61 2d 38 2e 31 2e 31 30 20 7b 0a  pragma-8.1.10 {.
3b40: 20 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69    sqlite3_finali
3b50: 7a 65 20 24 3a 3a 53 54 4d 54 0a 7d 20 53 51 4c  ze $::STMT.} SQL
3b60: 49 54 45 5f 53 43 48 45 4d 41 0a 0a 23 20 4d 61  ITE_SCHEMA..# Ma
3b70: 6b 65 20 73 75 72 65 20 74 68 65 20 73 63 68 65  ke sure the sche
3b80: 6d 61 2d 76 65 72 73 69 6f 6e 20 63 61 6e 20 62  ma-version can b
3b90: 65 20 6d 61 6e 69 70 75 6c 61 74 65 64 20 69 6e  e manipulated in
3ba0: 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74   an attached dat
3bb0: 61 62 61 73 65 2e 0a 66 69 6c 65 20 64 65 6c 65  abase..file dele
3bc0: 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74 32 2e  te -force test2.
3bd0: 64 62 0a 66 69 6c 65 20 64 65 6c 65 74 65 20 2d  db.file delete -
3be0: 66 6f 72 63 65 20 74 65 73 74 32 2e 64 62 2d 6a  force test2.db-j
3bf0: 6f 75 72 6e 61 6c 0a 64 6f 5f 74 65 73 74 20 70  ournal.do_test p
3c00: 72 61 67 6d 61 2d 38 2e 31 2e 31 31 20 7b 0a 20  ragma-8.1.11 {. 
3c10: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 41   execsql {.    A
3c20: 54 54 41 43 48 20 27 74 65 73 74 32 2e 64 62 27  TTACH 'test2.db'
3c30: 20 41 53 20 61 75 78 3b 0a 20 20 20 20 43 52 45   AS aux;.    CRE
3c40: 41 54 45 20 54 41 42 4c 45 20 61 75 78 2e 74 31  ATE TABLE aux.t1
3c50: 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20 20 20 50  (a, b, c);.    P
3c60: 52 41 47 4d 41 20 61 75 78 2e 73 63 68 65 6d 61  RAGMA aux.schema
3c70: 5f 76 65 72 73 69 6f 6e 20 3d 20 32 30 35 3b 0a  _version = 205;.
3c80: 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74    }.} {}.do_test
3c90: 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31 32 20 7b   pragma-8.1.12 {
3ca0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
3cb0: 20 50 52 41 47 4d 41 20 61 75 78 2e 73 63 68 65   PRAGMA aux.sche
3cc0: 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a  ma_version;.  }.
3cd0: 7d 20 32 30 35 0a 64 6f 5f 74 65 73 74 20 70 72  } 205.do_test pr
3ce0: 61 67 6d 61 2d 38 2e 31 2e 31 33 20 7b 0a 20 20  agma-8.1.13 {.  
3cf0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
3d00: 41 47 4d 41 20 73 63 68 65 6d 61 5f 76 65 72 73  AGMA schema_vers
3d10: 69 6f 6e 3b 0a 20 20 7d 0a 7d 20 31 30 38 0a 0a  ion;.  }.} 108..
3d20: 23 20 41 6e 64 20 63 68 65 63 6b 20 74 68 61 74  # And check that
3d30: 20 6d 6f 64 69 66 79 69 6e 67 20 74 68 65 20 73   modifying the s
3d40: 63 68 65 6d 61 2d 76 65 72 73 69 6f 6e 20 69 6e  chema-version in
3d50: 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74   an attached dat
3d60: 61 62 61 73 65 0a 23 20 66 6f 72 63 65 73 20 74  abase.# forces t
3d70: 68 65 20 73 65 63 6f 6e 64 20 63 6f 6e 6e 65 63  he second connec
3d80: 74 69 6f 6e 20 74 6f 20 72 65 6c 6f 61 64 20 74  tion to reload t
3d90: 68 65 20 73 63 68 65 6d 61 2e 0a 64 6f 5f 74 65  he schema..do_te
3da0: 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31 34  st pragma-8.1.14
3db0: 20 7b 0a 20 20 73 71 6c 69 74 65 33 20 64 62 32   {.  sqlite3 db2
3dc0: 20 74 65 73 74 2e 64 62 3b 20 73 65 74 20 3a 3a   test.db; set ::
3dd0: 44 42 32 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  DB2 [sqlite3_con
3de0: 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e 74 65 72 20  nection_pointer 
3df0: 64 62 32 5d 0a 20 20 65 78 65 63 73 71 6c 20 7b  db2].  execsql {
3e00: 0a 20 20 20 20 41 54 54 41 43 48 20 27 74 65 73  .    ATTACH 'tes
3e10: 74 32 2e 64 62 27 20 41 53 20 61 75 78 3b 0a 20  t2.db' AS aux;. 
3e20: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
3e30: 20 61 75 78 2e 74 31 3b 0a 20 20 7d 20 64 62 32   aux.t1;.  } db2
3e40: 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 70 72  .} {}.do_test pr
3e50: 61 67 6d 61 2d 38 2e 31 2e 31 35 20 7b 0a 20 20  agma-8.1.15 {.  
3e60: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
3e70: 41 47 4d 41 20 61 75 78 2e 73 63 68 65 6d 61 5f  AGMA aux.schema_
3e80: 76 65 72 73 69 6f 6e 20 3d 20 32 30 36 3b 0a 20  version = 206;. 
3e90: 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20   }.} {}.do_test 
3ea0: 70 72 61 67 6d 61 2d 38 2e 31 2e 31 36 20 7b 0a  pragma-8.1.16 {.
3eb0: 20 20 73 65 74 20 3a 3a 53 54 4d 54 20 5b 73 71    set ::STMT [sq
3ec0: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 24 3a  lite3_prepare $:
3ed0: 3a 44 42 32 20 22 53 45 4c 45 43 54 20 2a 20 46  :DB2 "SELECT * F
3ee0: 52 4f 4d 20 61 75 78 2e 74 31 22 20 2d 31 20 44  ROM aux.t1" -1 D
3ef0: 55 4d 4d 59 5d 0a 20 20 73 71 6c 69 74 65 33 5f  UMMY].  sqlite3_
3f00: 73 74 65 70 20 24 3a 3a 53 54 4d 54 0a 7d 20 53  step $::STMT.} S
3f10: 51 4c 49 54 45 5f 45 52 52 4f 52 0a 64 6f 5f 74  QLITE_ERROR.do_t
3f20: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 31 2e 31  est pragma-8.1.1
3f30: 37 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66 69  7 {.  sqlite3_fi
3f40: 6e 61 6c 69 7a 65 20 24 3a 3a 53 54 4d 54 0a 7d  nalize $::STMT.}
3f50: 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 0a 64   SQLITE_SCHEMA.d
3f60: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
3f70: 31 2e 31 38 20 7b 0a 20 20 64 62 32 20 63 6c 6f  1.18 {.  db2 clo
3f80: 73 65 0a 7d 20 7b 7d 0a 0a 23 20 4e 6f 77 20 74  se.} {}..# Now t
3f90: 65 73 74 20 74 68 61 74 20 74 68 65 20 75 73 65  est that the use
3fa0: 72 2d 76 65 72 73 69 6f 6e 20 63 61 6e 20 62 65  r-version can be
3fb0: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 74 65   read and writte
3fc0: 6e 20 28 61 6e 64 20 74 68 61 74 20 77 65 20 61  n (and that we a
3fd0: 72 65 6e 27 74 0a 23 20 61 63 63 69 64 65 6e 74  ren't.# accident
3fe0: 61 6c 6c 79 20 6d 61 6e 69 70 75 6c 61 74 69 6e  ally manipulatin
3ff0: 67 20 74 68 65 20 73 63 68 65 6d 61 2d 76 65 72  g the schema-ver
4000: 73 69 6f 6e 20 69 6e 73 74 65 61 64 29 2e 0a 64  sion instead)..d
4010: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e  o_test pragma-8.
4020: 32 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 32  2.1 {.  execsql2
4030: 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73   {.    PRAGMA us
4040: 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a  er_version;.  }.
4050: 7d 20 7b 75 73 65 72 5f 76 65 72 73 69 6f 6e 20  } {user_version 
4060: 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d  0}.do_test pragm
4070: 61 2d 38 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63  a-8.2.2 {.  exec
4080: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
4090: 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 3d 20   user_version = 
40a0: 32 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74  2;.  }.} {}.do_t
40b0: 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 33  est pragma-8.2.3
40c0: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 32 20  .1 {.  execsql2 
40d0: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73 65  {.    PRAGMA use
40e0: 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d  r_version;.  }.}
40f0: 20 7b 75 73 65 72 5f 76 65 72 73 69 6f 6e 20 32   {user_version 2
4100: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
4110: 2d 38 2e 32 2e 33 2e 32 20 7b 0a 20 20 64 62 20  -8.2.3.2 {.  db 
4120: 63 6c 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20  close.  sqlite3 
4130: 64 62 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65  db test.db.  exe
4140: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
4150: 41 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b 0a  A user_version;.
4160: 20 20 7d 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73    }.} {2}.do_tes
4170: 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e 31  t pragma-8.2.4.1
4180: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4190: 20 20 20 50 52 41 47 4d 41 20 73 63 68 65 6d 61     PRAGMA schema
41a0: 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20  _version;.  }.} 
41b0: 7b 31 30 38 7d 0a 69 66 63 61 70 61 62 6c 65 20  {108}.ifcapable 
41c0: 76 61 63 75 75 6d 20 7b 0a 20 20 64 6f 5f 74 65  vacuum {.  do_te
41d0: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e  st pragma-8.2.4.
41e0: 32 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  2 {.    execsql 
41f0: 7b 0a 20 20 20 20 20 20 56 41 43 55 55 4d 3b 0a  {.      VACUUM;.
4200: 20 20 20 20 20 20 50 52 41 47 4d 41 20 75 73 65        PRAGMA use
4210: 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 20 20 7d  r_version;.    }
4220: 0a 20 20 7d 20 7b 32 7d 0a 20 20 64 6f 5f 74 65  .  } {2}.  do_te
4230: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 34 2e  st pragma-8.2.4.
4240: 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20  3 {.    execsql 
4250: 7b 0a 20 20 20 20 20 20 50 52 41 47 4d 41 20 73  {.      PRAGMA s
4260: 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 3b 0a 20  chema_version;. 
4270: 20 20 20 7d 0a 20 20 7d 20 7b 31 30 39 7d 0a 7d     }.  } {109}.}
4280: 0a 64 62 20 65 76 61 6c 20 7b 41 54 54 41 43 48  .db eval {ATTACH
4290: 20 27 74 65 73 74 32 2e 64 62 27 20 41 53 20 61   'test2.db' AS a
42a0: 75 78 7d 0a 0a 23 20 43 68 65 63 6b 20 74 68 61  ux}..# Check tha
42b0: 74 20 74 68 65 20 75 73 65 72 2d 76 65 72 73 69  t the user-versi
42c0: 6f 6e 20 69 6e 20 74 68 65 20 61 75 78 69 6c 61  on in the auxila
42d0: 72 79 20 64 61 74 61 62 61 73 65 20 63 61 6e 20  ry database can 
42e0: 62 65 20 6d 61 6e 69 70 75 6c 61 74 65 64 20 28  be manipulated (
42f0: 0a 23 20 61 6e 64 20 74 68 61 74 20 77 65 20 61  .# and that we a
4300: 72 65 6e 27 74 20 61 63 63 69 64 65 6e 74 61 6c  ren't accidental
4310: 6c 79 20 6d 61 6e 69 70 75 6c 61 74 69 6e 67 20  ly manipulating 
4320: 74 68 65 20 73 61 6d 65 20 69 6e 20 74 68 65 20  the same in the 
4330: 6d 61 69 6e 20 64 62 29 2e 0a 64 6f 5f 74 65 73  main db)..do_tes
4340: 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 35 20 7b  t pragma-8.2.5 {
4350: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4360: 20 50 52 41 47 4d 41 20 61 75 78 2e 75 73 65 72   PRAGMA aux.user
4370: 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20  _version;.  }.} 
4380: 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {0}.do_test prag
4390: 6d 61 2d 38 2e 32 2e 36 20 7b 0a 20 20 65 78 65  ma-8.2.6 {.  exe
43a0: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
43b0: 41 20 61 75 78 2e 75 73 65 72 5f 76 65 72 73 69  A aux.user_versi
43c0: 6f 6e 20 3d 20 33 3b 0a 20 20 7d 0a 7d 20 7b 7d  on = 3;.  }.} {}
43d0: 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d  .do_test pragma-
43e0: 38 2e 32 2e 37 20 7b 0a 20 20 65 78 65 63 73 71  8.2.7 {.  execsq
43f0: 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 61  l {.    PRAGMA a
4400: 75 78 2e 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b  ux.user_version;
4410: 0a 20 20 7d 0a 7d 20 7b 33 7d 0a 64 6f 5f 74 65  .  }.} {3}.do_te
4420: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 38 20  st pragma-8.2.8 
4430: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4440: 20 20 50 52 41 47 4d 41 20 6d 61 69 6e 2e 75 73    PRAGMA main.us
4450: 65 72 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a  er_version;.  }.
4460: 7d 20 7b 32 7d 0a 0a 23 20 4e 6f 77 20 63 68 65  } {2}..# Now che
4470: 63 6b 20 74 68 61 74 20 61 20 52 4f 4c 4c 42 41  ck that a ROLLBA
4480: 43 4b 20 72 65 73 65 74 73 20 74 68 65 20 75 73  CK resets the us
4490: 65 72 2d 76 65 72 73 69 6f 6e 20 69 66 20 69 74  er-version if it
44a0: 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 69   has been modifi
44b0: 65 64 0a 23 20 77 69 74 68 69 6e 20 61 20 74 72  ed.# within a tr
44c0: 61 6e 73 61 63 74 69 6f 6e 2e 0a 64 6f 5f 74 65  ansaction..do_te
44d0: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 39 20  st pragma-8.2.9 
44e0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
44f0: 20 20 42 45 47 49 4e 3b 0a 20 20 20 20 50 52 41    BEGIN;.    PRA
4500: 47 4d 41 20 61 75 78 2e 75 73 65 72 5f 76 65 72  GMA aux.user_ver
4510: 73 69 6f 6e 20 3d 20 31 30 3b 0a 20 20 20 20 50  sion = 10;.    P
4520: 52 41 47 4d 41 20 75 73 65 72 5f 76 65 72 73 69  RAGMA user_versi
4530: 6f 6e 20 3d 20 31 31 3b 0a 20 20 7d 0a 7d 20 7b  on = 11;.  }.} {
4540: 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61  }.do_test pragma
4550: 2d 38 2e 32 2e 31 30 20 7b 0a 20 20 65 78 65 63  -8.2.10 {.  exec
4560: 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41  sql {.    PRAGMA
4570: 20 61 75 78 2e 75 73 65 72 5f 76 65 72 73 69 6f   aux.user_versio
4580: 6e 3b 0a 20 20 7d 0a 7d 20 7b 31 30 7d 0a 64 6f  n;.  }.} {10}.do
4590: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32  _test pragma-8.2
45a0: 2e 31 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .11 {.  execsql 
45b0: 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 6d 61 69  {.    PRAGMA mai
45c0: 6e 2e 75 73 65 72 5f 76 65 72 73 69 6f 6e 3b 0a  n.user_version;.
45d0: 20 20 7d 0a 7d 20 7b 31 31 7d 0a 64 6f 5f 74 65    }.} {11}.do_te
45e0: 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 31 32  st pragma-8.2.12
45f0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4600: 20 20 20 52 4f 4c 4c 42 41 43 4b 3b 0a 20 20 20     ROLLBACK;.   
4610: 20 50 52 41 47 4d 41 20 61 75 78 2e 75 73 65 72   PRAGMA aux.user
4620: 5f 76 65 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20  _version;.  }.} 
4630: 7b 33 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {3}.do_test prag
4640: 6d 61 2d 38 2e 32 2e 31 33 20 7b 0a 20 20 65 78  ma-8.2.13 {.  ex
4650: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
4660: 4d 41 20 6d 61 69 6e 2e 75 73 65 72 5f 76 65 72  MA main.user_ver
4670: 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20 7b 32 7d 0a  sion;.  }.} {2}.
4680: 0a 23 20 54 72 79 20 61 20 6e 65 67 61 74 69 76  .# Try a negativ
4690: 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
46a0: 75 73 65 72 2d 76 65 72 73 69 6f 6e 0a 64 6f 5f  user-version.do_
46b0: 74 65 73 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e  test pragma-8.2.
46c0: 31 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  14 {.  execsql {
46d0: 0a 20 20 20 20 50 52 41 47 4d 41 20 75 73 65 72  .    PRAGMA user
46e0: 5f 76 65 72 73 69 6f 6e 20 3d 20 2d 34 35 30 3b  _version = -450;
46f0: 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73  .  }.} {}.do_tes
4700: 74 20 70 72 61 67 6d 61 2d 38 2e 32 2e 31 35 20  t pragma-8.2.15 
4710: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4720: 20 20 50 52 41 47 4d 41 20 75 73 65 72 5f 76 65    PRAGMA user_ve
4730: 72 73 69 6f 6e 3b 0a 20 20 7d 0a 7d 20 7b 2d 34  rsion;.  }.} {-4
4740: 35 30 7d 0a 7d 20 3b 20 23 20 69 66 63 61 70 61  50}.} ; # ifcapa
4750: 62 6c 65 20 73 63 68 65 6d 61 5f 76 65 72 73 69  ble schema_versi
4760: 6f 6e 0a 0a 0a 23 20 54 65 73 74 20 74 65 6d 70  on...# Test temp
4770: 5f 73 74 6f 72 65 20 61 6e 64 20 74 65 6d 70 5f  _store and temp_
4780: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20  store_directory 
4790: 70 72 61 67 6d 61 73 0a 23 0a 69 66 63 61 70 61  pragmas.#.ifcapa
47a0: 62 6c 65 20 70 61 67 65 72 5f 70 72 61 67 6d 61  ble pager_pragma
47b0: 73 20 7b 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  s {.do_test prag
47c0: 6d 61 2d 39 2e 31 20 7b 0a 20 20 64 62 20 63 6c  ma-9.1 {.  db cl
47d0: 6f 73 65 0a 20 20 73 71 6c 69 74 65 33 20 64 62  ose.  sqlite3 db
47e0: 20 74 65 73 74 2e 64 62 0a 20 20 65 78 65 63 73   test.db.  execs
47f0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
4800: 74 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a  temp_store;.  }.
4810: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {0}.do_test pr
4820: 61 67 6d 61 2d 39 2e 32 20 7b 0a 20 20 65 78 65  agma-9.2 {.  exe
4830: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
4840: 41 20 74 65 6d 70 5f 73 74 6f 72 65 3d 66 69 6c  A temp_store=fil
4850: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65  e;.    PRAGMA te
4860: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20  mp_store;.  }.} 
4870: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {1}.do_test prag
4880: 6d 61 2d 39 2e 33 20 7b 0a 20 20 65 78 65 63 73  ma-9.3 {.  execs
4890: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
48a0: 74 65 6d 70 5f 73 74 6f 72 65 3d 6d 65 6d 6f 72  temp_store=memor
48b0: 79 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65  y;.    PRAGMA te
48c0: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20  mp_store;.  }.} 
48d0: 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {2}.do_test prag
48e0: 6d 61 2d 39 2e 34 20 7b 0a 20 20 65 78 65 63 73  ma-9.4 {.  execs
48f0: 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20  ql {.    PRAGMA 
4900: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
4910: 74 6f 72 79 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64  tory;.  }.} {}.d
4920: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39 2e  o_test pragma-9.
4930: 35 20 7b 0a 20 20 73 65 74 20 70 77 64 20 5b 73  5 {.  set pwd [s
4940: 74 72 69 6e 67 20 6d 61 70 20 7b 27 20 27 27 7d  tring map {' ''}
4950: 20 5b 70 77 64 5d 5d 0a 20 20 65 78 65 63 73 71   [pwd]].  execsq
4960: 6c 20 22 0a 20 20 20 20 50 52 41 47 4d 41 20 74  l ".    PRAGMA t
4970: 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
4980: 6f 72 79 3d 27 24 70 77 64 27 3b 0a 20 20 22 0a  ory='$pwd';.  ".
4990: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  } {}.do_test pra
49a0: 67 6d 61 2d 39 2e 36 20 7b 0a 20 20 65 78 65 63  gma-9.6 {.  exec
49b0: 73 71 6c 20 7b 20 0a 20 20 20 20 50 52 41 47 4d  sql { .    PRAGM
49c0: 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72  A temp_store_dir
49d0: 65 63 74 6f 72 79 3b 0a 20 20 7d 0a 7d 20 5b 6c  ectory;.  }.} [l
49e0: 69 73 74 20 5b 70 77 64 5d 5d 0a 64 6f 5f 74 65  ist [pwd]].do_te
49f0: 73 74 20 70 72 61 67 6d 61 2d 39 2e 37 20 7b 0a  st pragma-9.7 {.
4a00: 20 20 63 61 74 63 68 73 71 6c 20 7b 20 0a 20 20    catchsql { .  
4a10: 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74    PRAGMA temp_st
4a20: 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 3d 27 2f  ore_directory='/
4a30: 4e 4f 4e 2f 45 58 49 53 54 45 4e 54 2f 50 41 54  NON/EXISTENT/PAT
4a40: 48 2f 46 4f 4f 42 41 52 27 3b 0a 20 20 7d 0a 7d  H/FOOBAR';.  }.}
4a50: 20 7b 31 20 7b 6e 6f 74 20 61 20 77 72 69 74 61   {1 {not a writa
4a60: 62 6c 65 20 64 69 72 65 63 74 6f 72 79 7d 7d 0a  ble directory}}.
4a70: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39  do_test pragma-9
4a80: 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .8 {.  execsql {
4a90: 20 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d   .    PRAGMA tem
4aa0: 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
4ab0: 79 3d 27 27 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 69  y='';.  }.} {}.i
4ac0: 66 63 61 70 61 62 6c 65 20 74 65 6d 70 64 62 20  fcapable tempdb 
4ad0: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 70 72 61 67  {.  do_test prag
4ae0: 6d 61 2d 39 2e 39 20 7b 0a 20 20 20 20 65 78 65  ma-9.9 {.    exe
4af0: 63 73 71 6c 20 7b 20 0a 20 20 20 20 20 20 50 52  csql { .      PR
4b00: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f  AGMA temp_store_
4b10: 64 69 72 65 63 74 6f 72 79 3b 0a 20 20 20 20 20  directory;.     
4b20: 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f   PRAGMA temp_sto
4b30: 72 65 3d 46 49 4c 45 3b 0a 20 20 20 20 20 20 43  re=FILE;.      C
4b40: 52 45 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45  REATE TEMP TABLE
4b50: 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65   temp_store_dire
4b60: 63 74 6f 72 79 5f 74 65 73 74 28 61 20 69 6e 74  ctory_test(a int
4b70: 65 67 65 72 29 3b 0a 20 20 20 20 20 20 49 4e 53  eger);.      INS
4b80: 45 52 54 20 49 4e 54 4f 20 74 65 6d 70 5f 73 74  ERT INTO temp_st
4b90: 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 5f 74 65  ore_directory_te
4ba0: 73 74 20 76 61 6c 75 65 73 20 28 32 29 3b 0a 20  st values (2);. 
4bb0: 20 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52       SELECT * FR
4bc0: 4f 4d 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69  OM temp_store_di
4bd0: 72 65 63 74 6f 72 79 5f 74 65 73 74 3b 0a 20 20  rectory_test;.  
4be0: 20 20 7d 0a 20 20 7d 20 7b 32 7d 0a 7d 0a 64 6f    }.  } {2}.}.do
4bf0: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39 2e 31  _test pragma-9.1
4c00: 30 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 22  0 {.  catchsql "
4c10: 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70  .    PRAGMA temp
4c20: 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79  _store_directory
4c30: 3d 27 24 70 77 64 27 3b 0a 20 20 20 20 53 45 4c  ='$pwd';.    SEL
4c40: 45 43 54 20 2a 20 46 52 4f 4d 20 74 65 6d 70 5f  ECT * FROM temp_
4c50: 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 5f  store_directory_
4c60: 74 65 73 74 3b 0a 20 20 22 0a 7d 20 7b 31 20 7b  test;.  ".} {1 {
4c70: 6e 6f 20 73 75 63 68 20 74 61 62 6c 65 3a 20 74  no such table: t
4c80: 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
4c90: 6f 72 79 5f 74 65 73 74 7d 7d 0a 0a 64 6f 5f 74  ory_test}}..do_t
4ca0: 65 73 74 20 70 72 61 67 6d 61 2d 39 2e 31 31 20  est pragma-9.11 
4cb0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4cc0: 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74    PRAGMA temp_st
4cd0: 6f 72 65 20 3d 20 30 3b 0a 20 20 20 20 50 52 41  ore = 0;.    PRA
4ce0: 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 3b 0a  GMA temp_store;.
4cf0: 20 20 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73    }.} {0}.do_tes
4d00: 74 20 70 72 61 67 6d 61 2d 39 2e 31 32 20 7b 0a  t pragma-9.12 {.
4d10: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
4d20: 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
4d30: 65 20 3d 20 31 3b 0a 20 20 20 20 50 52 41 47 4d  e = 1;.    PRAGM
4d40: 41 20 74 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20  A temp_store;.  
4d50: 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  }.} {1}.do_test 
4d60: 70 72 61 67 6d 61 2d 39 2e 31 33 20 7b 0a 20 20  pragma-9.13 {.  
4d70: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52  execsql {.    PR
4d80: 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20  AGMA temp_store 
4d90: 3d 20 32 3b 0a 20 20 20 20 50 52 41 47 4d 41 20  = 2;.    PRAGMA 
4da0: 74 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a  temp_store;.  }.
4db0: 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {2}.do_test pr
4dc0: 61 67 6d 61 2d 39 2e 31 34 20 7b 0a 20 20 65 78  agma-9.14 {.  ex
4dd0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47  ecsql {.    PRAG
4de0: 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20  MA temp_store = 
4df0: 33 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 74 65  3;.    PRAGMA te
4e00: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 7d 0a 7d 20  mp_store;.  }.} 
4e10: 7b 30 7d 0a 62 72 65 61 6b 70 6f 69 6e 74 0a 64  {0}.breakpoint.d
4e20: 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 39 2e  o_test pragma-9.
4e30: 31 35 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  15 {.  catchsql 
4e40: 7b 0a 20 20 20 20 42 45 47 49 4e 20 45 58 43 4c  {.    BEGIN EXCL
4e50: 55 53 49 56 45 3b 0a 20 20 20 20 43 52 45 41 54  USIVE;.    CREAT
4e60: 45 20 54 45 4d 50 20 54 41 42 4c 45 20 74 65 6d  E TEMP TABLE tem
4e70: 70 5f 74 61 62 6c 65 28 74 29 3b 0a 20 20 20 20  p_table(t);.    
4e80: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 6d 70  INSERT INTO temp
4e90: 5f 74 61 62 6c 65 20 56 41 4c 55 45 53 28 27 76  _table VALUES('v
4ea0: 61 6c 75 61 62 6c 65 20 64 61 74 61 27 29 3b 0a  aluable data');.
4eb0: 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 5f      PRAGMA temp_
4ec0: 73 74 6f 72 65 20 3d 20 31 3b 0a 20 20 7d 0a 7d  store = 1;.  }.}
4ed0: 20 7b 31 20 7b 74 65 6d 70 6f 72 61 72 79 20 73   {1 {temporary s
4ee0: 74 6f 72 61 67 65 20 63 61 6e 6e 6f 74 20 62 65  torage cannot be
4ef0: 20 63 68 61 6e 67 65 64 20 66 72 6f 6d 20 77 69   changed from wi
4f00: 74 68 69 6e 20 61 20 74 72 61 6e 73 61 63 74 69  thin a transacti
4f10: 6f 6e 7d 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61  on}}.do_test pra
4f20: 67 6d 61 2d 39 2e 31 36 20 7b 0a 20 20 65 78 65  gma-9.16 {.  exe
4f30: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
4f40: 54 20 2a 20 46 52 4f 4d 20 74 65 6d 70 5f 74 61  T * FROM temp_ta
4f50: 62 6c 65 3b 0a 20 20 20 20 43 4f 4d 4d 49 54 3b  ble;.    COMMIT;
4f60: 0a 20 20 7d 0a 7d 20 7b 7b 76 61 6c 75 61 62 6c  .  }.} {{valuabl
4f70: 65 20 64 61 74 61 7d 7d 0a 7d 20 3b 23 20 69 66  e data}}.} ;# if
4f80: 63 61 70 61 62 6c 65 20 70 61 67 65 72 5f 70 72  capable pager_pr
4f90: 61 67 6d 61 73 0a 0a 69 66 63 61 70 61 62 6c 65  agmas..ifcapable
4fa0: 20 74 72 69 67 67 65 72 20 7b 0a 0a 64 6f 5f 74   trigger {..do_t
4fb0: 65 73 74 20 70 72 61 67 6d 61 2d 31 30 2e 30 20  est pragma-10.0 
4fc0: 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20  {.  catchsql {. 
4fd0: 20 20 20 44 52 4f 50 20 54 41 42 4c 45 20 6d 61     DROP TABLE ma
4fe0: 69 6e 2e 74 31 3b 0a 20 20 7d 0a 20 20 65 78 65  in.t1;.  }.  exe
4ff0: 63 73 71 6c 20 7b 0a 20 20 20 20 50 52 41 47 4d  csql {.    PRAGM
5000: 41 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20  A count_changes 
5010: 3d 20 31 3b 0a 0a 20 20 20 20 43 52 45 41 54 45  = 1;..    CREATE
5020: 20 54 41 42 4c 45 20 74 31 28 61 20 50 52 49 4d   TABLE t1(a PRIM
5030: 41 52 59 20 4b 45 59 29 3b 0a 20 20 20 20 43 52  ARY KEY);.    CR
5040: 45 41 54 45 20 54 41 42 4c 45 20 74 31 5f 6d 69  EATE TABLE t1_mi
5050: 72 72 6f 72 28 61 29 3b 0a 20 20 20 20 43 52 45  rror(a);.    CRE
5060: 41 54 45 20 54 41 42 4c 45 20 74 31 5f 6d 69 72  ATE TABLE t1_mir
5070: 72 6f 72 32 28 61 29 3b 0a 20 20 20 20 43 52 45  ror2(a);.    CRE
5080: 41 54 45 20 54 52 49 47 47 45 52 20 74 31 5f 62  ATE TRIGGER t1_b
5090: 69 20 42 45 46 4f 52 45 20 49 4e 53 45 52 54 20  i BEFORE INSERT 
50a0: 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20 20 20  ON t1 BEGIN .   
50b0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
50c0: 31 5f 6d 69 72 72 6f 72 20 56 41 4c 55 45 53 28  1_mirror VALUES(
50d0: 6e 65 77 2e 61 29 3b 0a 20 20 20 20 45 4e 44 3b  new.a);.    END;
50e0: 0a 20 20 20 20 43 52 45 41 54 45 20 54 52 49 47  .    CREATE TRIG
50f0: 47 45 52 20 74 31 5f 61 69 20 41 46 54 45 52 20  GER t1_ai AFTER 
5100: 49 4e 53 45 52 54 20 4f 4e 20 74 31 20 42 45 47  INSERT ON t1 BEG
5110: 49 4e 20 0a 20 20 20 20 20 20 49 4e 53 45 52 54  IN .      INSERT
5120: 20 49 4e 54 4f 20 74 31 5f 6d 69 72 72 6f 72 32   INTO t1_mirror2
5130: 20 56 41 4c 55 45 53 28 6e 65 77 2e 61 29 3b 0a   VALUES(new.a);.
5140: 20 20 20 20 45 4e 44 3b 0a 20 20 20 20 43 52 45      END;.    CRE
5150: 41 54 45 20 54 52 49 47 47 45 52 20 74 31 5f 62  ATE TRIGGER t1_b
5160: 75 20 42 45 46 4f 52 45 20 55 50 44 41 54 45 20  u BEFORE UPDATE 
5170: 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20 20 20  ON t1 BEGIN .   
5180: 20 20 20 55 50 44 41 54 45 20 74 31 5f 6d 69 72     UPDATE t1_mir
5190: 72 6f 72 20 53 45 54 20 61 20 3d 20 6e 65 77 2e  ror SET a = new.
51a0: 61 20 57 48 45 52 45 20 61 20 3d 20 6f 6c 64 2e  a WHERE a = old.
51b0: 61 3b 0a 20 20 20 20 45 4e 44 3b 0a 20 20 20 20  a;.    END;.    
51c0: 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 74  CREATE TRIGGER t
51d0: 31 5f 61 75 20 41 46 54 45 52 20 55 50 44 41 54  1_au AFTER UPDAT
51e0: 45 20 4f 4e 20 74 31 20 42 45 47 49 4e 20 0a 20  E ON t1 BEGIN . 
51f0: 20 20 20 20 20 55 50 44 41 54 45 20 74 31 5f 6d       UPDATE t1_m
5200: 69 72 72 6f 72 32 20 53 45 54 20 61 20 3d 20 6e  irror2 SET a = n
5210: 65 77 2e 61 20 57 48 45 52 45 20 61 20 3d 20 6f  ew.a WHERE a = o
5220: 6c 64 2e 61 3b 0a 20 20 20 20 45 4e 44 3b 0a 20  ld.a;.    END;. 
5230: 20 20 20 43 52 45 41 54 45 20 54 52 49 47 47 45     CREATE TRIGGE
5240: 52 20 74 31 5f 62 64 20 42 45 46 4f 52 45 20 44  R t1_bd BEFORE D
5250: 45 4c 45 54 45 20 4f 4e 20 74 31 20 42 45 47 49  ELETE ON t1 BEGI
5260: 4e 20 0a 20 20 20 20 20 20 44 45 4c 45 54 45 20  N .      DELETE 
5270: 46 52 4f 4d 20 74 31 5f 6d 69 72 72 6f 72 20 57  FROM t1_mirror W
5280: 48 45 52 45 20 61 20 3d 20 6f 6c 64 2e 61 3b 0a  HERE a = old.a;.
5290: 20 20 20 20 45 4e 44 3b 0a 20 20 20 20 43 52 45      END;.    CRE
52a0: 41 54 45 20 54 52 49 47 47 45 52 20 74 31 5f 61  ATE TRIGGER t1_a
52b0: 64 20 41 46 54 45 52 20 44 45 4c 45 54 45 20 4f  d AFTER DELETE O
52c0: 4e 20 74 31 20 42 45 47 49 4e 20 0a 20 20 20 20  N t1 BEGIN .    
52d0: 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31    DELETE FROM t1
52e0: 5f 6d 69 72 72 6f 72 32 20 57 48 45 52 45 20 61  _mirror2 WHERE a
52f0: 20 3d 20 6f 6c 64 2e 61 3b 0a 20 20 20 20 45 4e   = old.a;.    EN
5300: 44 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 64 6f 5f  D;.  }.} {}..do_
5310: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 30 2e 31  test pragma-10.1
5320: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
5330: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
5340: 31 20 56 41 4c 55 45 53 28 72 61 6e 64 73 74 72  1 VALUES(randstr
5350: 28 31 30 2c 31 30 29 29 3b 0a 20 20 7d 0a 7d 20  (10,10));.  }.} 
5360: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72 61 67  {1}.do_test prag
5370: 6d 61 2d 31 30 2e 32 20 7b 0a 20 20 65 78 65 63  ma-10.2 {.  exec
5380: 73 71 6c 20 7b 0a 20 20 20 20 55 50 44 41 54 45  sql {.    UPDATE
5390: 20 74 31 20 53 45 54 20 61 20 3d 20 72 61 6e 64   t1 SET a = rand
53a0: 73 74 72 28 31 30 2c 31 30 29 3b 0a 20 20 7d 0a  str(10,10);.  }.
53b0: 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 70 72  } {1}.do_test pr
53c0: 61 67 6d 61 2d 31 30 2e 33 20 7b 0a 20 20 65 78  agma-10.3 {.  ex
53d0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45  ecsql {.    DELE
53e0: 54 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a  TE FROM t1;.  }.
53f0: 7d 20 7b 31 7d 0a 0a 7d 20 3b 23 20 69 66 63 61  } {1}..} ;# ifca
5400: 70 61 62 6c 65 20 74 72 69 67 67 65 72 0a 0a 69  pable trigger..i
5410: 66 63 61 70 61 62 6c 65 20 73 63 68 65 6d 61 5f  fcapable schema_
5420: 70 72 61 67 6d 61 73 20 7b 0a 20 20 64 6f 5f 74  pragmas {.  do_t
5430: 65 73 74 20 70 72 61 67 6d 61 2d 31 31 2e 31 20  est pragma-11.1 
5440: 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 32 20 7b  {.    execsql2 {
5450: 0a 20 20 20 20 20 20 70 72 61 67 6d 61 20 63 6f  .      pragma co
5460: 6c 6c 61 74 69 6f 6e 5f 6c 69 73 74 3b 0a 20 20  llation_list;.  
5470: 20 20 7d 0a 20 20 7d 20 7b 73 65 71 20 30 20 6e    }.  } {seq 0 n
5480: 61 6d 65 20 4e 4f 43 41 53 45 20 73 65 71 20 31  ame NOCASE seq 1
5490: 20 6e 61 6d 65 20 42 49 4e 41 52 59 7d 0a 20 20   name BINARY}.  
54a0: 64 6f 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31  do_test pragma-1
54b0: 31 2e 32 20 7b 0a 20 20 20 20 64 62 20 63 6f 6c  1.2 {.    db col
54c0: 6c 61 74 65 20 4e 65 77 5f 43 6f 6c 6c 61 74 69  late New_Collati
54d0: 6f 6e 20 62 6c 61 68 2e 2e 2e 0a 20 20 20 20 65  on blah....    e
54e0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 70  xecsql {.      p
54f0: 72 61 67 6d 61 20 63 6f 6c 6c 61 74 69 6f 6e 5f  ragma collation_
5500: 6c 69 73 74 3b 0a 20 20 20 20 7d 0a 20 20 7d 20  list;.    }.  } 
5510: 7b 30 20 4e 65 77 5f 43 6f 6c 6c 61 74 69 6f 6e  {0 New_Collation
5520: 20 31 20 4e 4f 43 41 53 45 20 32 20 42 49 4e 41   1 NOCASE 2 BINA
5530: 52 59 7d 0a 7d 0a 0a 69 66 63 61 70 61 62 6c 65  RY}.}..ifcapable
5540: 20 73 63 68 65 6d 61 5f 70 72 61 67 6d 61 73 26   schema_pragmas&
5550: 26 74 65 6d 70 64 62 20 7b 0a 20 20 64 6f 5f 74  &tempdb {.  do_t
5560: 65 73 74 20 70 72 61 67 6d 61 2d 31 32 2e 31 20  est pragma-12.1 
5570: 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64 62  {.    sqlite3 db
5580: 32 20 74 65 73 74 2e 64 62 0a 20 20 20 20 65 78  2 test.db.    ex
5590: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50 52  ecsql {.      PR
55a0: 41 47 4d 41 20 74 65 6d 70 2e 74 61 62 6c 65 5f  AGMA temp.table_
55b0: 69 6e 66 6f 28 27 61 62 63 27 29 3b 0a 20 20 20  info('abc');.   
55c0: 20 7d 20 64 62 32 0a 20 20 7d 20 7b 7d 0a 20 20   } db2.  } {}.  
55d0: 64 62 32 20 63 6c 6f 73 65 0a 0a 20 20 64 6f 5f  db2 close..  do_
55e0: 74 65 73 74 20 70 72 61 67 6d 61 2d 31 32 2e 32  test pragma-12.2
55f0: 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64   {.    sqlite3 d
5600: 62 32 20 74 65 73 74 2e 64 62 0a 20 20 20 20 65  b2 test.db.    e
5610: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 50  xecsql {.      P
5620: 52 41 47 4d 41 20 74 65 6d 70 2e 64 65 66 61 75  RAGMA temp.defau
5630: 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 3d 20  lt_cache_size = 
5640: 32 30 30 3b 0a 20 20 20 20 20 20 50 52 41 47 4d  200;.      PRAGM
5650: 41 20 74 65 6d 70 2e 64 65 66 61 75 6c 74 5f 63  A temp.default_c
5660: 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 7d  ache_size;.    }
5670: 20 64 62 32 0a 20 20 7d 20 7b 32 30 30 7d 0a 20   db2.  } {200}. 
5680: 20 64 62 32 20 63 6c 6f 73 65 0a 0a 20 20 64 6f   db2 close..  do
5690: 5f 74 65 73 74 20 70 72 61 67 6d 61 2d 31 32 2e  _test pragma-12.
56a0: 33 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 20  3 {.    sqlite3 
56b0: 64 62 32 20 74 65 73 74 2e 64 62 0a 20 20 20 20  db2 test.db.    
56c0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
56d0: 50 52 41 47 4d 41 20 74 65 6d 70 2e 63 61 63 68  PRAGMA temp.cach
56e0: 65 5f 73 69 7a 65 20 3d 20 34 30 30 3b 0a 20 20  e_size = 400;.  
56f0: 20 20 20 20 50 52 41 47 4d 41 20 74 65 6d 70 2e      PRAGMA temp.
5700: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
5710: 7d 20 64 62 32 0a 20 20 7d 20 7b 34 30 30 7d 0a  } db2.  } {400}.
5720: 20 20 64 62 32 20 63 6c 6f 73 65 0a 7d 0a 0a 69    db2 close.}..i
5730: 66 63 61 70 61 62 6c 65 20 62 6c 6f 62 6c 69 74  fcapable bloblit
5740: 20 7b 0a 0a 64 6f 5f 74 65 73 74 20 70 72 61 67   {..do_test prag
5750: 6d 61 2d 31 33 2e 31 20 7b 0a 20 20 65 78 65 63  ma-13.1 {.  exec
5760: 73 71 6c 20 7b 0a 20 20 20 20 44 52 4f 50 20 54  sql {.    DROP T
5770: 41 42 4c 45 20 49 46 20 45 58 49 53 54 53 20 74  ABLE IF EXISTS t
5780: 34 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 76 64  4;.    PRAGMA vd
5790: 62 65 5f 74 72 61 63 65 3d 6f 6e 3b 0a 20 20 20  be_trace=on;.   
57a0: 20 50 52 41 47 4d 41 20 76 64 62 65 5f 6c 69 73   PRAGMA vdbe_lis
57b0: 74 69 6e 67 3d 6f 6e 3b 0a 20 20 20 20 50 52 41  ting=on;.    PRA
57c0: 47 4d 41 20 73 71 6c 5f 74 72 61 63 65 3d 6f 6e  GMA sql_trace=on
57d0: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  ;.    CREATE TAB
57e0: 4c 45 20 74 34 28 61 20 49 4e 54 45 47 45 52 20  LE t4(a INTEGER 
57f0: 50 52 49 4d 41 52 59 20 4b 45 59 2c 62 29 3b 0a  PRIMARY KEY,b);.
5800: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
5810: 74 34 28 62 29 20 56 41 4c 55 45 53 28 78 27 30  t4(b) VALUES(x'0
5820: 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 30  123456789abcdef0
5830: 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 30  123456789abcdef0
5840: 31 32 33 34 35 36 37 38 39 27 29 3b 0a 20 20 20  123456789');.   
5850: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 28   INSERT INTO t4(
5860: 62 29 20 56 41 4c 55 45 53 28 72 61 6e 64 73 74  b) VALUES(randst
5870: 72 28 33 30 2c 33 30 29 29 3b 0a 20 20 20 20 49  r(30,30));.    I
5880: 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 28 62 29  NSERT INTO t4(b)
5890: 20 56 41 4c 55 45 53 28 31 2e 32 33 34 35 36 29   VALUES(1.23456)
58a0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
58b0: 4f 20 74 34 28 62 29 20 56 41 4c 55 45 53 28 4e  O t4(b) VALUES(N
58c0: 55 4c 4c 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  ULL);.    INSERT
58d0: 20 49 4e 54 4f 20 74 34 28 62 29 20 56 41 4c 55   INTO t4(b) VALU
58e0: 45 53 28 30 29 3b 0a 20 20 20 20 49 4e 53 45 52  ES(0);.    INSER
58f0: 54 20 49 4e 54 4f 20 74 34 28 62 29 20 53 45 4c  T INTO t4(b) SEL
5900: 45 43 54 20 62 7c 7c 62 7c 7c 62 7c 7c 62 20 46  ECT b||b||b||b F
5910: 52 4f 4d 20 74 34 3b 0a 20 20 20 20 53 45 4c 45  ROM t4;.    SELE
5920: 43 54 20 2a 20 46 52 4f 4d 20 74 34 3b 0a 20 20  CT * FROM t4;.  
5930: 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  }.  execsql {.  
5940: 20 20 50 52 41 47 4d 41 20 76 64 62 65 5f 74 72    PRAGMA vdbe_tr
5950: 61 63 65 3d 6f 66 66 3b 0a 20 20 20 20 50 52 41  ace=off;.    PRA
5960: 47 4d 41 20 76 64 62 65 5f 6c 69 73 74 69 6e 67  GMA vdbe_listing
5970: 3d 6f 66 66 3b 0a 20 20 20 20 50 52 41 47 4d 41  =off;.    PRAGMA
5980: 20 73 71 6c 5f 74 72 61 63 65 3d 6f 66 66 3b 0a   sql_trace=off;.
5990: 20 20 7d 0a 7d 20 7b 7d 0a 0a 7d 20 3b 23 20 69    }.} {}..} ;# i
59a0: 66 63 61 70 61 62 6c 65 20 62 6c 6f 62 6c 69 74  fcapable bloblit
59b0: 20 0a 0a 23 20 52 65 73 65 74 20 74 68 65 20 73   ..# Reset the s
59c0: 71 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65  qlite3_temp_dire
59d0: 63 74 6f 72 79 20 76 61 72 69 61 62 6c 65 20 66  ctory variable f
59e0: 6f 72 20 74 68 65 20 6e 65 78 74 20 72 75 6e 20  or the next run 
59f0: 6f 66 20 74 65 73 74 73 3a 0a 73 71 6c 69 74 65  of tests:.sqlite
5a00: 33 20 64 62 58 20 3a 6d 65 6d 6f 72 79 3a 0a 64  3 dbX :memory:.d
5a10: 62 58 20 65 76 61 6c 20 7b 50 52 41 47 4d 41 20  bX eval {PRAGMA 
5a20: 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63  temp_store_direc
5a30: 74 6f 72 79 20 3d 20 22 22 7d 0a 64 62 58 20 63  tory = ""}.dbX c
5a40: 6c 6f 73 65 0a 0a 66 69 6e 69 73 68 5f 74 65 73  lose..finish_tes
5a50: 74 0a                                            t.