/ Hex Artifact Content
Login

Artifact 04d88621f0c51a8b3bf5512b9e61a5d7a61059e33097a1a6b1c6f6cf2d1f2a35:


0000: 23 20 32 30 31 37 20 41 75 67 75 73 74 20 39 0a  # 2017 August 9.
0010: 23 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64  #.# The author d
0020: 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67  isclaims copyrig
0030: 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63  ht to this sourc
0040: 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63  e code.  In plac
0050: 65 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e  e of.# a legal n
0060: 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61  otice, here is a
0070: 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20   blessing:.#.#  
0080: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f    May you do goo
0090: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a  d and not evil..
00a0: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e  #    May you fin
00b0: 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f  d forgiveness fo
00c0: 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66  r yourself and f
00d0: 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23  orgive others..#
00e0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72      May you shar
00f0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20  e freely, never 
0100: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e  taking more than
0110: 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 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 2a 0a 23 0a 23 0a 0a 0a 73 65 74 20  *****.#.#...set 
0170: 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20 64 69  testdir [file di
0180: 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f  rname $argv0].so
0190: 75 72 63 65 20 24 74 65 73 74 64 69 72 2f 74 65  urce $testdir/te
01a0: 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 74 65 73  ster.tcl.set tes
01b0: 74 70 72 65 66 69 78 20 72 65 75 73 65 32 0a 0a  tprefix reuse2..
01c0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
01d0: 31 2e 30 20 7b 0a 20 20 43 52 45 41 54 45 20 54  1.0 {.  CREATE T
01e0: 41 42 4c 45 20 74 31 28 78 20 49 4e 54 45 47 45  ABLE t1(x INTEGE
01f0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 79  R PRIMARY KEY, y
0200: 20 55 4e 49 51 55 45 2c 20 7a 29 3b 0a 20 20 43   UNIQUE, z);.  C
0210: 52 45 41 54 45 20 49 4e 44 45 58 20 69 31 20 4f  REATE INDEX i1 O
0220: 4e 20 74 31 28 7a 29 3b 0a 20 20 50 52 41 47 4d  N t1(z);.  PRAGM
0230: 41 20 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e  A schema_version
0240: 3b 0a 7d 20 7b 32 7d 0a 0a 64 6f 5f 74 65 73 74  ;.} {2}..do_test
0250: 20 31 2e 32 20 7b 0a 20 20 63 61 74 63 68 20 7b   1.2 {.  catch {
0260: 20 64 62 20 63 6c 6f 73 65 20 7d 0a 20 20 63 61   db close }.  ca
0270: 74 63 68 20 7b 20 64 62 32 20 63 6c 6f 73 65 20  tch { db2 close 
0280: 7d 0a 20 20 73 71 6c 69 74 65 33 20 64 62 32 20  }.  sqlite3 db2 
0290: 74 65 73 74 2e 64 62 20 2d 73 68 61 72 65 64 2d  test.db -shared-
02a0: 73 63 68 65 6d 61 20 31 0a 20 20 73 71 6c 69 74  schema 1.  sqlit
02b0: 65 33 20 64 62 20 20 74 65 73 74 2e 64 62 20 2d  e3 db  test.db -
02c0: 73 68 61 72 65 64 2d 73 63 68 65 6d 61 20 31 0a  shared-schema 1.
02d0: 7d 20 7b 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c  } {}..do_execsql
02e0: 5f 74 65 73 74 20 2d 64 62 20 64 62 32 20 31 2e  _test -db db2 1.
02f0: 33 2e 31 20 7b 0a 20 20 49 4e 53 45 52 54 20 49  3.1 {.  INSERT I
0300: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c  NTO t1 VALUES(1,
0310: 20 32 2c 20 33 29 3b 0a 7d 0a 0a 64 6f 5f 65 78   2, 3);.}..do_ex
0320: 65 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64  ecsql_test -db d
0330: 62 32 20 31 2e 33 2e 32 20 7b 0a 20 20 49 4e 53  b2 1.3.2 {.  INS
0340: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
0350: 45 53 28 34 2c 20 35 2c 20 36 29 3b 0a 7d 0a 0a  ES(4, 5, 6);.}..
0360: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
0370: 31 2e 33 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54  1.3.3 {.  SELECT
0380: 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 7d 20 7b 31   * FROM t1;.} {1
0390: 20 32 20 33 20 34 20 35 20 36 7d 0a 0a 23 2d 2d   2 3 4 5 6}..#--
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03e0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73 65 74 5f 64  --------.reset_d
03f0: 62 0a 69 66 63 61 70 61 62 6c 65 20 66 74 73 35  b.ifcapable fts5
0400: 20 7b 0a 20 20 64 6f 5f 65 78 65 63 73 71 6c 5f   {.  do_execsql_
0410: 74 65 73 74 20 32 2e 30 20 7b 0a 20 20 20 20 43  test 2.0 {.    C
0420: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
0430: 42 4c 45 20 66 74 20 55 53 49 4e 47 20 66 74 73  BLE ft USING fts
0440: 35 28 63 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  5(c);.    INSERT
0450: 20 49 4e 54 4f 20 66 74 20 56 41 4c 55 45 53 28   INTO ft VALUES(
0460: 27 6f 6e 65 20 74 77 6f 20 74 68 72 65 65 27 29  'one two three')
0470: 3b 0a 20 20 7d 0a 20 20 64 62 20 63 6c 6f 73 65  ;.  }.  db close
0480: 0a 20 20 73 71 6c 69 74 65 33 20 64 62 20 74 65  .  sqlite3 db te
0490: 73 74 2e 64 62 20 2d 73 68 61 72 65 64 2d 73 63  st.db -shared-sc
04a0: 68 65 6d 61 20 31 0a 0a 20 20 64 6f 5f 65 78 65  hema 1..  do_exe
04b0: 63 73 71 6c 5f 74 65 73 74 20 32 2e 31 20 7b 0a  csql_test 2.1 {.
04c0: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
04d0: 4d 20 66 74 0a 20 20 7d 20 7b 7b 6f 6e 65 20 74  M ft.  } {{one t
04e0: 77 6f 20 74 68 72 65 65 7d 7d 0a 7d 0a 0a 23 2d  wo three}}.}..#-
04f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0500: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0520: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 72 65 73 65 74 5f  ---------.reset_
0540: 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  db.do_execsql_te
0550: 73 74 20 33 2e 30 20 7b 0a 20 20 43 52 45 41 54  st 3.0 {.  CREAT
0560: 45 20 54 41 42 4c 45 20 74 31 28 78 20 49 4e 54  E TABLE t1(x INT
0570: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
0580: 2c 20 79 20 55 4e 49 51 55 45 2c 20 7a 29 3b 0a  , y UNIQUE, z);.
0590: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 69    CREATE INDEX i
05a0: 31 20 4f 4e 20 74 31 28 7a 29 3b 0a 20 20 50 52  1 ON t1(z);.  PR
05b0: 41 47 4d 41 20 73 63 68 65 6d 61 5f 76 65 72 73  AGMA schema_vers
05c0: 69 6f 6e 3b 0a 7d 20 7b 32 7d 0a 0a 64 6f 5f 74  ion;.} {2}..do_t
05d0: 65 73 74 20 33 2e 31 20 7b 0a 20 20 73 71 6c 69  est 3.1 {.  sqli
05e0: 74 65 33 20 64 62 31 20 74 65 73 74 2e 64 62 20  te3 db1 test.db 
05f0: 2d 73 68 61 72 65 64 2d 73 63 68 65 6d 61 20 31  -shared-schema 1
0600: 0a 20 20 73 71 6c 69 74 65 33 20 64 62 32 20 74  .  sqlite3 db2 t
0610: 65 73 74 2e 64 62 20 2d 73 68 61 72 65 64 2d 73  est.db -shared-s
0620: 63 68 65 6d 61 20 31 0a 7d 20 7b 7d 0a 0a 64 6f  chema 1.} {}..do
0630: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 2d 64  _execsql_test -d
0640: 62 20 64 62 31 20 33 2e 32 2e 31 20 7b 20 53 45  b db1 3.2.1 { SE
0650: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 7d  LECT * FROM t1 }
0660: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
0670: 20 2d 64 62 20 64 62 32 20 33 2e 32 2e 32 20 7b   -db db2 3.2.2 {
0680: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0690: 31 20 7d 0a 0a 72 65 67 69 73 74 65 72 5f 73 63  1 }..register_sc
06a0: 68 65 6d 61 70 6f 6f 6c 5f 6d 6f 64 75 6c 65 20  hemapool_module 
06b0: 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  db.do_execsql_te
06c0: 73 74 20 33 2e 33 20 7b 20 0a 20 20 53 45 4c 45  st 3.3 { .  SELE
06d0: 43 54 20 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52  CT 'nref=' || nR
06e0: 65 66 2c 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c  ef, 'nschema=' |
06f0: 7c 20 6e 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c  | nSchema, 'ndel
0700: 65 74 65 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65  ete=' || nDelete
0710: 0a 20 20 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f  .  FROM schemapo
0720: 6f 6c 3b 0a 7d 20 7b 6e 72 65 66 3d 32 20 6e 73  ol;.} {nref=2 ns
0730: 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d  chema=1 ndelete=
0740: 30 7d 0a 0a 73 71 6c 69 74 65 33 20 64 62 33 20  0}..sqlite3 db3 
0750: 74 65 73 74 2e 64 62 20 2d 73 68 61 72 65 64 2d  test.db -shared-
0760: 73 63 68 65 6d 61 20 31 0a 72 65 67 69 73 74 65  schema 1.registe
0770: 72 5f 73 63 68 65 6d 61 70 6f 6f 6c 5f 6d 6f 64  r_schemapool_mod
0780: 75 6c 65 20 64 62 33 0a 0a 64 6f 5f 65 78 65 63  ule db3..do_exec
0790: 73 71 6c 5f 74 65 73 74 20 33 2e 35 20 7b 20 0a  sql_test 3.5 { .
07a0: 20 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d 27    SELECT 'nref='
07b0: 20 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68 65   || nRef, 'nsche
07c0: 6d 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c  ma=' || nSchema,
07d0: 20 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e   'ndelete=' || n
07e0: 44 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73 63  Delete.  FROM sc
07f0: 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 6e 72 65  hemapool;.} {nre
0800: 66 3d 32 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64  f=2 nschema=1 nd
0810: 65 6c 65 74 65 3d 30 7d 0a 0a 64 6f 5f 65 78 65  elete=0}..do_exe
0820: 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62  csql_test -db db
0830: 33 20 33 2e 36 20 7b 20 0a 20 20 53 45 4c 45 43  3 3.6 { .  SELEC
0840: 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 53  T * FROM t1;.  S
0850: 45 4c 45 43 54 20 27 6e 72 65 66 3d 27 20 7c 7c  ELECT 'nref=' ||
0860: 20 6e 52 65 66 2c 20 27 6e 73 63 68 65 6d 61 3d   nRef, 'nschema=
0870: 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27 6e  ' || nSchema, 'n
0880: 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65 6c  delete=' || nDel
0890: 65 74 65 0a 20 20 46 52 4f 4d 20 73 63 68 65 6d  ete.  FROM schem
08a0: 61 70 6f 6f 6c 3b 0a 7d 20 7b 6e 72 65 66 3d 33  apool;.} {nref=3
08b0: 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65   nschema=1 ndele
08c0: 74 65 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  te=0}..do_execsq
08d0: 6c 5f 74 65 73 74 20 33 2e 37 20 7b 20 0a 20 20  l_test 3.7 { .  
08e0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
08f0: 78 29 3b 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  x);.}..do_execsq
0900: 6c 5f 74 65 73 74 20 33 2e 38 20 7b 20 0a 20 20  l_test 3.8 { .  
0910: 53 45 4c 45 43 54 20 27 6e 72 65 66 3d 27 20 7c  SELECT 'nref=' |
0920: 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68 65 6d 61  | nRef, 'nschema
0930: 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27  =' || nSchema, '
0940: 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65  ndelete=' || nDe
0950: 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73 63 68 65  lete.  FROM sche
0960: 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 6e 72 65 66 3d  mapool;.} {nref=
0970: 33 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c  3 nschema=1 ndel
0980: 65 74 65 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63 73  ete=0}..do_execs
0990: 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62 31 20  ql_test -db db1 
09a0: 33 2e 39 2e 31 20 7b 20 53 45 4c 45 43 54 20 2a  3.9.1 { SELECT *
09b0: 20 46 52 4f 4d 20 74 31 20 7d 0a 64 6f 5f 65 78   FROM t1 }.do_ex
09c0: 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 39 2e 32  ecsql_test 3.9.2
09d0: 20 7b 20 0a 20 20 53 45 4c 45 43 54 20 27 6e 72   { .  SELECT 'nr
09e0: 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c 20 27 6e  ef=' || nRef, 'n
09f0: 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e 53 63 68  schema=' || nSch
0a00: 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65 3d 27 20  ema, 'ndelete=' 
0a10: 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20 46 52 4f  || nDelete.  FRO
0a20: 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20  M schemapool;.} 
0a30: 7b 6e 72 65 66 3d 31 20 6e 73 63 68 65 6d 61 3d  {nref=1 nschema=
0a40: 31 20 6e 64 65 6c 65 74 65 3d 30 20 6e 72 65 66  1 ndelete=0 nref
0a50: 3d 32 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65  =2 nschema=1 nde
0a60: 6c 65 74 65 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63  lete=0}..do_exec
0a70: 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62 32  sql_test -db db2
0a80: 20 33 2e 31 30 2e 31 20 7b 20 53 45 4c 45 43 54   3.10.1 { SELECT
0a90: 20 2a 20 46 52 4f 4d 20 74 31 20 7d 0a 64 6f 5f   * FROM t1 }.do_
0aa0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 31  execsql_test 3.1
0ab0: 30 2e 32 20 7b 20 0a 20 20 53 45 4c 45 43 54 20  0.2 { .  SELECT 
0ac0: 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c  'nref=' || nRef,
0ad0: 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e   'nschema=' || n
0ae0: 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65  Schema, 'ndelete
0af0: 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20  =' || nDelete.  
0b00: 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 20  FROM schemapool 
0b10: 4f 52 44 45 52 20 42 59 20 31 3b 0a 7d 20 7b 6e  ORDER BY 1;.} {n
0b20: 72 65 66 3d 31 20 6e 73 63 68 65 6d 61 3d 31 20  ref=1 nschema=1 
0b30: 6e 64 65 6c 65 74 65 3d 30 20 6e 72 65 66 3d 32  ndelete=0 nref=2
0b40: 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65   nschema=1 ndele
0b50: 74 65 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  te=0}..do_execsq
0b60: 6c 5f 74 65 73 74 20 2d 64 62 20 64 62 33 20 33  l_test -db db3 3
0b70: 2e 31 31 2e 31 20 7b 20 53 45 4c 45 43 54 20 2a  .11.1 { SELECT *
0b80: 20 46 52 4f 4d 20 74 31 20 7d 0a 64 6f 5f 65 78   FROM t1 }.do_ex
0b90: 65 63 73 71 6c 5f 74 65 73 74 20 33 2e 31 31 2e  ecsql_test 3.11.
0ba0: 32 20 7b 20 0a 20 20 53 45 4c 45 43 54 20 27 6e  2 { .  SELECT 'n
0bb0: 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c 20 27  ref=' || nRef, '
0bc0: 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e 53 63  nschema=' || nSc
0bd0: 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65 3d 27  hema, 'ndelete='
0be0: 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20 46 52   || nDelete.  FR
0bf0: 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d  OM schemapool;.}
0c00: 20 7b 6e 72 65 66 3d 33 20 6e 73 63 68 65 6d 61   {nref=3 nschema
0c10: 3d 31 20 6e 64 65 6c 65 74 65 3d 30 7d 0a 0a 23  =1 ndelete=0}..#
0c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 63 61 74 63 68  ----------.catch
0c70: 20 7b 64 62 31 20 63 6c 6f 73 65 7d 0a 63 61 74   {db1 close}.cat
0c80: 63 68 20 7b 64 62 32 20 63 6c 6f 73 65 7d 0a 63  ch {db2 close}.c
0c90: 61 74 63 68 20 7b 64 62 33 20 63 6c 6f 73 65 7d  atch {db3 close}
0ca0: 0a 72 65 73 65 74 5f 64 62 0a 64 6f 5f 65 78 65  .reset_db.do_exe
0cb0: 63 73 71 6c 5f 74 65 73 74 20 34 2e 30 2e 31 20  csql_test 4.0.1 
0cc0: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
0cd0: 20 78 31 28 61 2c 20 62 2c 20 63 29 3b 0a 20 20   x1(a, b, c);.  
0ce0: 43 52 45 41 54 45 20 49 4e 44 45 58 20 78 31 61  CREATE INDEX x1a
0cf0: 20 4f 4e 20 78 31 28 61 29 3b 0a 20 20 43 52 45   ON x1(a);.  CRE
0d00: 41 54 45 20 49 4e 44 45 58 20 78 31 62 20 4f 4e  ATE INDEX x1b ON
0d10: 20 78 31 28 62 29 3b 0a 7d 0a 64 6f 5f 74 65 73   x1(b);.}.do_tes
0d20: 74 20 34 2e 30 2e 32 20 7b 0a 20 20 64 62 20 63  t 4.0.2 {.  db c
0d30: 6c 6f 73 65 0a 20 20 66 6f 72 20 7b 73 65 74 20  lose.  for {set 
0d40: 69 20 31 7d 20 7b 24 69 20 3c 20 36 7d 20 7b 69  i 1} {$i < 6} {i
0d50: 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 66 6f 72  ncr i} {.    for
0d60: 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62  cedelete test.db
0d70: 24 7b 69 7d 2d 6a 6f 75 72 6e 61 6c 20 74 65 73  ${i}-journal tes
0d80: 74 2e 64 62 24 7b 69 7d 2d 77 61 6c 20 74 65 73  t.db${i}-wal tes
0d90: 74 2e 64 62 24 7b 69 7d 2d 77 61 6c 32 20 0a 20  t.db${i}-wal2 . 
0da0: 20 20 20 66 6f 72 63 65 63 6f 70 79 20 74 65 73     forcecopy tes
0db0: 74 2e 64 62 20 74 65 73 74 2e 64 62 24 7b 69 7d  t.db test.db${i}
0dc0: 0a 20 20 7d 0a 20 20 73 71 6c 69 74 65 33 20 64  .  }.  sqlite3 d
0dd0: 62 20 20 74 65 73 74 2e 64 62 0a 20 20 73 71 6c  b  test.db.  sql
0de0: 69 74 65 33 20 64 62 32 20 74 65 73 74 2e 64 62  ite3 db2 test.db
0df0: 20 2d 73 68 61 72 65 64 2d 73 63 68 65 6d 61 20   -shared-schema 
0e00: 31 0a 7d 20 7b 7d 0a 0a 72 65 67 69 73 74 65 72  1.} {}..register
0e10: 5f 73 63 68 65 6d 61 70 6f 6f 6c 5f 6d 6f 64 75  _schemapool_modu
0e20: 6c 65 20 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c  le db.do_execsql
0e30: 5f 74 65 73 74 20 34 2e 30 2e 33 20 7b 0a 20 20  _test 4.0.3 {.  
0e40: 53 45 4c 45 43 54 20 27 6e 72 65 66 3d 27 20 7c  SELECT 'nref=' |
0e50: 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68 65 6d 61  | nRef, 'nschema
0e60: 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27  =' || nSchema, '
0e70: 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65  ndelete=' || nDe
0e80: 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73 63 68 65  lete.  FROM sche
0e90: 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 7d 0a 0a 64 6f  mapool;.} {}..do
0ea0: 5f 74 65 73 74 20 34 2e 31 2e 31 20 7b 0a 20 20  _test 4.1.1 {.  
0eb0: 65 78 65 63 73 71 6c 20 7b 20 0a 20 20 20 20 41  execsql { .    A
0ec0: 54 54 41 43 48 20 27 74 65 73 74 2e 64 62 31 27  TTACH 'test.db1'
0ed0: 20 41 53 20 64 62 31 3b 20 0a 20 20 20 20 41 54   AS db1; .    AT
0ee0: 54 41 43 48 20 27 74 65 73 74 2e 64 62 32 27 20  TACH 'test.db2' 
0ef0: 41 53 20 64 62 32 3b 0a 20 20 20 20 41 54 54 41  AS db2;.    ATTA
0f00: 43 48 20 27 74 65 73 74 2e 64 62 33 27 20 41 53  CH 'test.db3' AS
0f10: 20 64 62 33 3b 0a 20 20 20 20 41 54 54 41 43 48   db3;.    ATTACH
0f20: 20 27 74 65 73 74 2e 64 62 34 27 20 41 53 20 64   'test.db4' AS d
0f30: 62 34 3b 0a 20 20 20 20 41 54 54 41 43 48 20 27  b4;.    ATTACH '
0f40: 74 65 73 74 2e 64 62 35 27 20 41 53 20 64 62 35  test.db5' AS db5
0f50: 3b 0a 20 20 7d 20 64 62 32 0a 7d 20 7b 7d 0a 64  ;.  } db2.} {}.d
0f60: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 34  o_execsql_test 4
0f70: 2e 31 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20  .1.2 {.  SELECT 
0f80: 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c  'nref=' || nRef,
0f90: 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e   'nschema=' || n
0fa0: 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65  Schema, 'ndelete
0fb0: 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20  =' || nDelete.  
0fc0: 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b  FROM schemapool;
0fd0: 0a 7d 20 7b 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  .} {}.do_execsql
0fe0: 5f 74 65 73 74 20 2d 64 62 20 64 62 32 20 34 2e  _test -db db2 4.
0ff0: 31 2e 33 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a  1.3 {.  SELECT *
1000: 20 46 52 4f 4d 20 64 62 33 2e 78 31 0a 7d 0a 64   FROM db3.x1.}.d
1010: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 34  o_execsql_test 4
1020: 2e 31 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20  .1.4 {.  SELECT 
1030: 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c  'nref=' || nRef,
1040: 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e   'nschema=' || n
1050: 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65  Schema, 'ndelete
1060: 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20  =' || nDelete.  
1070: 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b  FROM schemapool;
1080: 0a 7d 20 7b 6e 72 65 66 3d 31 20 6e 73 63 68 65  .} {nref=1 nsche
1090: 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d 30 7d 0a  ma=1 ndelete=0}.
10a0: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
10b0: 2d 64 62 20 64 62 32 20 34 2e 31 2e 35 20 7b 0a  -db db2 4.1.5 {.
10c0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
10d0: 64 62 32 2e 78 31 0a 7d 0a 64 6f 5f 65 78 65 63  db2.x1.}.do_exec
10e0: 73 71 6c 5f 74 65 73 74 20 34 2e 31 2e 36 20 7b  sql_test 4.1.6 {
10f0: 0a 20 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d  .  SELECT 'nref=
1100: 27 20 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68  ' || nRef, 'nsch
1110: 65 6d 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61  ema=' || nSchema
1120: 2c 20 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20  , 'ndelete=' || 
1130: 6e 44 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73  nDelete.  FROM s
1140: 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 6e 72  chemapool;.} {nr
1150: 65 66 3d 32 20 6e 73 63 68 65 6d 61 3d 31 20 6e  ef=2 nschema=1 n
1160: 64 65 6c 65 74 65 3d 30 7d 0a 64 6f 5f 65 78 65  delete=0}.do_exe
1170: 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62  csql_test -db db
1180: 32 20 34 2e 31 2e 37 20 7b 0a 20 20 53 45 4c 45  2 4.1.7 {.  SELE
1190: 43 54 20 2a 20 46 52 4f 4d 20 78 31 0a 7d 0a 64  CT * FROM x1.}.d
11a0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 34  o_execsql_test 4
11b0: 2e 31 2e 38 20 7b 0a 20 20 53 45 4c 45 43 54 20  .1.8 {.  SELECT 
11c0: 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c  'nref=' || nRef,
11d0: 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e   'nschema=' || n
11e0: 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65  Schema, 'ndelete
11f0: 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20  =' || nDelete.  
1200: 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b  FROM schemapool;
1210: 0a 7d 20 7b 6e 72 65 66 3d 36 20 6e 73 63 68 65  .} {nref=6 nsche
1220: 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d 30 7d 0a  ma=1 ndelete=0}.
1230: 0a 64 6f 5f 74 65 73 74 20 34 2e 32 2e 31 20 7b  .do_test 4.2.1 {
1240: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 20 53 45  .  catchsql { SE
1250: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 61 62 63 20  LECT * FROM abc 
1260: 7d 20 64 62 32 0a 7d 20 7b 31 20 7b 6e 6f 20 73  } db2.} {1 {no s
1270: 75 63 68 20 74 61 62 6c 65 3a 20 61 62 63 7d 7d  uch table: abc}}
1280: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
1290: 20 34 2e 32 2e 32 20 7b 0a 20 20 53 45 4c 45 43   4.2.2 {.  SELEC
12a0: 54 20 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65  T 'nref=' || nRe
12b0: 66 2c 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c  f, 'nschema=' ||
12c0: 20 6e 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65   nSchema, 'ndele
12d0: 74 65 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a  te=' || nDelete.
12e0: 20 20 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f    FROM schemapoo
12f0: 6c 3b 0a 7d 20 7b 6e 72 65 66 3d 36 20 6e 73 63  l;.} {nref=6 nsc
1300: 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d 30  hema=1 ndelete=0
1310: 7d 0a 0a 72 65 67 69 73 74 65 72 5f 73 63 68 65  }..register_sche
1320: 6d 61 70 6f 6f 6c 5f 6d 6f 64 75 6c 65 20 64 62  mapool_module db
1330: 32 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  2.do_execsql_tes
1340: 74 20 2d 64 62 20 64 62 32 20 34 2e 33 2e 31 20  t -db db2 4.3.1 
1350: 7b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  {.  INSERT INTO 
1360: 78 31 20 56 41 4c 55 45 53 28 31 2c 20 32 2c 20  x1 VALUES(1, 2, 
1370: 33 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  3);.  INSERT INT
1380: 4f 20 64 62 31 2e 78 31 20 56 41 4c 55 45 53 28  O db1.x1 VALUES(
1390: 34 2c 20 35 2c 20 36 29 3b 0a 20 20 49 4e 53 45  4, 5, 6);.  INSE
13a0: 52 54 20 49 4e 54 4f 20 64 62 32 2e 78 31 20 56  RT INTO db2.x1 V
13b0: 41 4c 55 45 53 28 37 2c 20 38 2c 20 39 29 3b 0a  ALUES(7, 8, 9);.
13c0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 64 62    INSERT INTO db
13d0: 33 2e 78 31 20 56 41 4c 55 45 53 28 31 30 2c 20  3.x1 VALUES(10, 
13e0: 31 31 2c 20 31 32 29 3b 0a 20 20 49 4e 53 45 52  11, 12);.  INSER
13f0: 54 20 49 4e 54 4f 20 64 62 34 2e 78 31 20 56 41  T INTO db4.x1 VA
1400: 4c 55 45 53 28 31 33 2c 20 31 34 2c 20 31 35 29  LUES(13, 14, 15)
1410: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
1420: 64 62 35 2e 78 31 20 56 41 4c 55 45 53 28 31 36  db5.x1 VALUES(16
1430: 2c 20 31 37 2c 20 31 38 29 3b 0a 20 20 53 45 4c  , 17, 18);.  SEL
1440: 45 43 54 20 27 6e 72 65 66 3d 27 20 7c 7c 20 6e  ECT 'nref=' || n
1450: 52 65 66 2c 20 27 6e 73 63 68 65 6d 61 3d 27 20  Ref, 'nschema=' 
1460: 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27 6e 64 65  || nSchema, 'nde
1470: 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65 6c 65 74  lete=' || nDelet
1480: 65 0a 20 20 46 52 4f 4d 20 73 63 68 65 6d 61 70  e.  FROM schemap
1490: 6f 6f 6c 3b 0a 7d 20 7b 6e 72 65 66 3d 36 20 6e  ool;.} {nref=6 n
14a0: 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65  schema=1 ndelete
14b0: 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  =0}..do_execsql_
14c0: 74 65 73 74 20 2d 64 62 20 64 62 32 20 34 2e 33  test -db db2 4.3
14d0: 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .2 {.  SELECT * 
14e0: 46 52 4f 4d 20 64 62 35 2e 78 31 3b 0a 20 20 53  FROM db5.x1;.  S
14f0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64 62 34  ELECT * FROM db4
1500: 2e 78 31 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .x1;.  SELECT * 
1510: 46 52 4f 4d 20 64 62 33 2e 78 31 3b 0a 20 20 53  FROM db3.x1;.  S
1520: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64 62 32  ELECT * FROM db2
1530: 2e 78 31 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .x1;.  SELECT * 
1540: 46 52 4f 4d 20 64 62 31 2e 78 31 3b 0a 20 20 53  FROM db1.x1;.  S
1550: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 31 3b  ELECT * FROM x1;
1560: 0a 20 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d  .  SELECT 'nref=
1570: 27 20 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68  ' || nRef, 'nsch
1580: 65 6d 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61  ema=' || nSchema
1590: 2c 20 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20  , 'ndelete=' || 
15a0: 6e 44 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73  nDelete.  FROM s
15b0: 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 0a 20  chemapool;.} {. 
15c0: 20 31 36 20 31 37 20 31 38 20 20 31 33 20 31 34   16 17 18  13 14
15d0: 20 31 35 20 20 31 30 20 31 31 20 31 32 20 20 37   15  10 11 12  7
15e0: 20 38 20 39 20 20 34 20 35 20 36 20 20 31 20 32   8 9  4 5 6  1 2
15f0: 20 33 0a 20 20 6e 72 65 66 3d 36 20 6e 73 63 68   3.  nref=6 nsch
1600: 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d 30 0a  ema=1 ndelete=0.
1610: 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65  }..do_execsql_te
1620: 73 74 20 2d 64 62 20 64 62 32 20 34 2e 33 2e 33  st -db db2 4.3.3
1630: 20 7b 0a 20 20 55 50 44 41 54 45 20 78 31 20 53   {.  UPDATE x1 S
1640: 45 54 20 61 3d 61 2b 31 30 3b 0a 20 20 55 50 44  ET a=a+10;.  UPD
1650: 41 54 45 20 64 62 35 2e 78 31 20 53 45 54 20 61  ATE db5.x1 SET a
1660: 3d 61 2b 31 30 3b 0a 20 20 53 45 4c 45 43 54 20  =a+10;.  SELECT 
1670: 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c  'nref=' || nRef,
1680: 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e   'nschema=' || n
1690: 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65  Schema, 'ndelete
16a0: 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20  =' || nDelete.  
16b0: 46 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b  FROM schemapool;
16c0: 0a 7d 20 7b 0a 20 20 6e 72 65 66 3d 36 20 6e 73  .} {.  nref=6 ns
16d0: 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d  chema=1 ndelete=
16e0: 30 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  0.}..do_execsql_
16f0: 74 65 73 74 20 2d 64 62 20 64 62 32 20 34 2e 33  test -db db2 4.3
1700: 2e 34 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .4 {.  SELECT * 
1710: 46 52 4f 4d 20 64 62 35 2e 78 31 3b 0a 20 20 53  FROM db5.x1;.  S
1720: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64 62 34  ELECT * FROM db4
1730: 2e 78 31 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .x1;.  SELECT * 
1740: 46 52 4f 4d 20 64 62 33 2e 78 31 3b 0a 20 20 53  FROM db3.x1;.  S
1750: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64 62 32  ELECT * FROM db2
1760: 2e 78 31 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20  .x1;.  SELECT * 
1770: 46 52 4f 4d 20 64 62 31 2e 78 31 3b 0a 20 20 53  FROM db1.x1;.  S
1780: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 31 3b  ELECT * FROM x1;
1790: 0a 20 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d  .  SELECT 'nref=
17a0: 27 20 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68  ' || nRef, 'nsch
17b0: 65 6d 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61  ema=' || nSchema
17c0: 2c 20 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20  , 'ndelete=' || 
17d0: 6e 44 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73  nDelete.  FROM s
17e0: 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 0a 20  chemapool;.} {. 
17f0: 20 32 36 20 31 37 20 31 38 20 20 31 33 20 31 34   26 17 18  13 14
1800: 20 31 35 20 20 31 30 20 31 31 20 31 32 20 20 37   15  10 11 12  7
1810: 20 38 20 39 20 20 34 20 35 20 36 20 20 31 31 20   8 9  4 5 6  11 
1820: 32 20 33 0a 20 20 6e 72 65 66 3d 36 20 6e 73 63  2 3.  nref=6 nsc
1830: 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65 3d 30  hema=1 ndelete=0
1840: 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .}..do_execsql_t
1850: 65 73 74 20 2d 64 62 20 64 62 32 20 34 2e 33 2e  est -db db2 4.3.
1860: 35 20 7b 0a 20 20 44 45 4c 45 54 45 20 46 52 4f  5 {.  DELETE FRO
1870: 4d 20 64 62 33 2e 78 31 3b 0a 20 20 44 45 4c 45  M db3.x1;.  DELE
1880: 54 45 20 46 52 4f 4d 20 78 31 3b 0a 20 20 53 45  TE FROM x1;.  SE
1890: 4c 45 43 54 20 27 6e 72 65 66 3d 27 20 7c 7c 20  LECT 'nref=' || 
18a0: 6e 52 65 66 2c 20 27 6e 73 63 68 65 6d 61 3d 27  nRef, 'nschema='
18b0: 20 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27 6e 64   || nSchema, 'nd
18c0: 65 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65 6c 65  elete=' || nDele
18d0: 74 65 0a 20 20 46 52 4f 4d 20 73 63 68 65 6d 61  te.  FROM schema
18e0: 70 6f 6f 6c 3b 0a 7d 20 7b 0a 20 20 6e 72 65 66  pool;.} {.  nref
18f0: 3d 36 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65  =6 nschema=1 nde
1900: 6c 65 74 65 3d 30 0a 7d 0a 0a 64 6f 5f 65 78 65  lete=0.}..do_exe
1910: 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62  csql_test -db db
1920: 32 20 34 2e 33 2e 36 20 7b 0a 20 20 53 45 4c 45  2 4.3.6 {.  SELE
1930: 43 54 20 2a 20 46 52 4f 4d 20 64 62 35 2e 78 31  CT * FROM db5.x1
1940: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ;.  SELECT * FRO
1950: 4d 20 64 62 34 2e 78 31 3b 0a 20 20 53 45 4c 45  M db4.x1;.  SELE
1960: 43 54 20 2a 20 46 52 4f 4d 20 64 62 33 2e 78 31  CT * FROM db3.x1
1970: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ;.  SELECT * FRO
1980: 4d 20 64 62 32 2e 78 31 3b 0a 20 20 53 45 4c 45  M db2.x1;.  SELE
1990: 43 54 20 2a 20 46 52 4f 4d 20 64 62 31 2e 78 31  CT * FROM db1.x1
19a0: 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f  ;.  SELECT * FRO
19b0: 4d 20 78 31 3b 0a 20 20 53 45 4c 45 43 54 20 27  M x1;.  SELECT '
19c0: 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c 20  nref=' || nRef, 
19d0: 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e 53  'nschema=' || nS
19e0: 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65 3d  chema, 'ndelete=
19f0: 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20 46  ' || nDelete.  F
1a00: 52 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b 0a  ROM schemapool;.
1a10: 7d 20 7b 0a 20 20 32 36 20 31 37 20 31 38 20 20  } {.  26 17 18  
1a20: 31 33 20 31 34 20 31 35 20 20 37 20 38 20 39 20  13 14 15  7 8 9 
1a30: 20 34 20 35 20 36 20 0a 20 20 6e 72 65 66 3d 36   4 5 6 .  nref=6
1a40: 20 6e 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65   nschema=1 ndele
1a50: 74 65 3d 30 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73  te=0.}..do_execs
1a60: 71 6c 5f 74 65 73 74 20 2d 64 62 20 64 62 32 20  ql_test -db db2 
1a70: 34 2e 33 2e 36 20 7b 0a 20 20 53 45 4c 45 43 54  4.3.6 {.  SELECT
1a80: 20 2a 20 46 52 4f 4d 20 64 62 35 2e 78 31 2c 20   * FROM db5.x1, 
1a90: 64 62 34 2e 78 31 2c 20 64 62 31 2e 78 31 3b 0a  db4.x1, db1.x1;.
1aa0: 20 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d 27    SELECT 'nref='
1ab0: 20 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68 65   || nRef, 'nsche
1ac0: 6d 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c  ma=' || nSchema,
1ad0: 20 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e   'ndelete=' || n
1ae0: 44 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73 63  Delete.  FROM sc
1af0: 68 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 32 36 20  hemapool;.} {26 
1b00: 31 37 20 31 38 20 31 33 20 31 34 20 31 35 20 34  17 18 13 14 15 4
1b10: 20 35 20 36 20 6e 72 65 66 3d 36 20 6e 73 63 68   5 6 nref=6 nsch
1b20: 65 6d 61 3d 33 20 6e 64 65 6c 65 74 65 3d 30 7d  ema=3 ndelete=0}
1b30: 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..#-------------
1b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
1b80: 54 65 73 74 20 74 68 65 20 69 6e 63 72 65 6d 65  Test the increme
1b90: 6e 74 61 6c 2d 62 6c 6f 62 20 41 50 49 20 77 69  ntal-blob API wi
1ba0: 74 68 20 52 45 55 53 45 5f 53 43 48 45 4d 41 20  th REUSE_SCHEMA 
1bb0: 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 0a 23 0a 63  connections..#.c
1bc0: 61 74 63 68 20 7b 64 62 31 20 63 6c 6f 73 65 7d  atch {db1 close}
1bd0: 0a 63 61 74 63 68 20 7b 64 62 32 20 63 6c 6f 73  .catch {db2 clos
1be0: 65 7d 0a 63 61 74 63 68 20 7b 64 62 33 20 63 6c  e}.catch {db3 cl
1bf0: 6f 73 65 7d 0a 72 65 73 65 74 5f 64 62 0a 64 6f  ose}.reset_db.do
1c00: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e  _execsql_test 5.
1c10: 30 2e 31 20 7b 0a 20 20 43 52 45 41 54 45 20 54  0.1 {.  CREATE T
1c20: 41 42 4c 45 20 62 62 62 28 61 20 49 4e 54 45 47  ABLE bbb(a INTEG
1c30: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  ER PRIMARY KEY, 
1c40: 62 29 3b 0a 7d 0a 64 62 20 63 6c 6f 73 65 0a 64  b);.}.db close.d
1c50: 6f 5f 74 65 73 74 20 35 2e 30 2e 32 20 7b 0a 20  o_test 5.0.2 {. 
1c60: 20 73 71 6c 69 74 65 33 20 64 62 32 20 74 65 73   sqlite3 db2 tes
1c70: 74 2e 64 62 20 2d 73 68 61 72 65 64 2d 73 63 68  t.db -shared-sch
1c80: 65 6d 61 20 31 0a 20 20 72 65 67 69 73 74 65 72  ema 1.  register
1c90: 5f 73 63 68 65 6d 61 70 6f 6f 6c 5f 6d 6f 64 75  _schemapool_modu
1ca0: 6c 65 20 64 62 32 0a 20 20 66 6f 72 20 7b 73 65  le db2.  for {se
1cb0: 74 20 69 20 31 7d 20 7b 24 69 3c 36 7d 20 7b 69  t i 1} {$i<6} {i
1cc0: 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 66 6f 72  ncr i} {.    for
1cd0: 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62  cedelete test.db
1ce0: 24 7b 69 7d 2d 6a 6f 75 72 6e 61 6c 20 74 65 73  ${i}-journal tes
1cf0: 74 2e 64 62 24 7b 69 7d 2d 77 61 6c 20 74 65 73  t.db${i}-wal tes
1d00: 74 2e 64 62 24 7b 69 7d 2d 77 61 6c 32 20 0a 20  t.db${i}-wal2 . 
1d10: 20 20 20 66 6f 72 63 65 63 6f 70 79 20 74 65 73     forcecopy tes
1d20: 74 2e 64 62 20 74 65 73 74 2e 64 62 24 7b 69 7d  t.db test.db${i}
1d30: 0a 20 20 20 20 73 71 6c 69 74 65 33 20 64 62 20  .    sqlite3 db 
1d40: 74 65 73 74 2e 64 62 24 7b 69 7d 0a 20 20 20 20  test.db${i}.    
1d50: 64 62 20 65 76 61 6c 20 7b 20 49 4e 53 45 52 54  db eval { INSERT
1d60: 20 49 4e 54 4f 20 62 62 62 20 56 41 4c 55 45 53   INTO bbb VALUES
1d70: 28 31 32 33 2c 20 27 64 61 74 61 62 61 73 65 5f  (123, 'database_
1d80: 27 20 7c 7c 20 24 69 29 20 7d 0a 20 20 20 20 64  ' || $i) }.    d
1d90: 62 20 63 6c 6f 73 65 0a 20 20 20 20 64 62 32 20  b close.    db2 
1da0: 65 76 61 6c 20 22 41 54 54 41 43 48 20 27 74 65  eval "ATTACH 'te
1db0: 73 74 2e 64 62 24 7b 69 7d 27 20 41 53 20 64 62  st.db${i}' AS db
1dc0: 24 7b 69 7d 22 0a 20 20 7d 0a 20 20 65 78 65 63  ${i}".  }.  exec
1dd0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
1de0: 20 27 6e 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66   'nref=' || nRef
1df0: 2c 20 27 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20  , 'nschema=' || 
1e00: 6e 53 63 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74  nSchema, 'ndelet
1e10: 65 3d 27 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20  e=' || nDelete. 
1e20: 20 20 20 20 20 46 52 4f 4d 20 73 63 68 65 6d 61       FROM schema
1e30: 70 6f 6f 6c 3b 0a 20 20 7d 20 64 62 32 0a 7d 20  pool;.  } db2.} 
1e40: 7b 6e 72 65 66 3d 36 20 6e 73 63 68 65 6d 61 3d  {nref=6 nschema=
1e50: 31 20 6e 64 65 6c 65 74 65 3d 30 7d 0a 0a 64 6f  1 ndelete=0}..do
1e60: 5f 74 65 73 74 20 35 2e 31 2e 31 20 7b 0a 20 20  _test 5.1.1 {.  
1e70: 73 65 74 20 72 65 73 20 5b 6c 69 73 74 5d 0a 20  set res [list]. 
1e80: 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
1e90: 24 69 3c 36 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  $i<6} {incr i} {
1ea0: 0a 20 20 20 20 73 65 74 20 63 68 61 6e 20 5b 64  .    set chan [d
1eb0: 62 32 20 69 6e 63 72 62 6c 6f 62 20 64 62 24 7b  b2 incrblob db${
1ec0: 69 7d 20 62 62 62 20 62 20 31 32 33 5d 0a 20 20  i} bbb b 123].  
1ed0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 20 5b 67    lappend res [g
1ee0: 65 74 73 20 24 63 68 61 6e 5d 0a 20 20 20 20 63  ets $chan].    c
1ef0: 6c 6f 73 65 20 24 63 68 61 6e 0a 20 20 7d 0a 20  lose $chan.  }. 
1f00: 20 73 65 74 20 72 65 73 0a 7d 20 7b 64 61 74 61   set res.} {data
1f10: 62 61 73 65 5f 31 20 64 61 74 61 62 61 73 65 5f  base_1 database_
1f20: 32 20 64 61 74 61 62 61 73 65 5f 33 20 64 61 74  2 database_3 dat
1f30: 61 62 61 73 65 5f 34 20 64 61 74 61 62 61 73 65  abase_4 database
1f40: 5f 35 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  _5}..do_execsql_
1f50: 74 65 73 74 20 2d 64 62 20 64 62 32 20 35 2e 31  test -db db2 5.1
1f60: 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20 27 6e  .2 {.  SELECT 'n
1f70: 72 65 66 3d 27 20 7c 7c 20 6e 52 65 66 2c 20 27  ref=' || nRef, '
1f80: 6e 73 63 68 65 6d 61 3d 27 20 7c 7c 20 6e 53 63  nschema=' || nSc
1f90: 68 65 6d 61 2c 20 27 6e 64 65 6c 65 74 65 3d 27  hema, 'ndelete='
1fa0: 20 7c 7c 20 6e 44 65 6c 65 74 65 0a 20 20 46 52   || nDelete.  FR
1fb0: 4f 4d 20 73 63 68 65 6d 61 70 6f 6f 6c 3b 0a 7d  OM schemapool;.}
1fc0: 20 7b 6e 72 65 66 3d 36 20 6e 73 63 68 65 6d 61   {nref=6 nschema
1fd0: 3d 31 20 6e 64 65 6c 65 74 65 3d 30 7d 0a 0a 64  =1 ndelete=0}..d
1fe0: 6f 5f 74 65 73 74 20 35 2e 32 2e 31 20 7b 0a 20  o_test 5.2.1 {. 
1ff0: 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
2000: 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 20 64  olumn_metadata d
2010: 62 32 20 6d 61 69 6e 20 62 62 62 20 61 0a 7d 20  b2 main bbb a.} 
2020: 7b 49 4e 54 45 47 45 52 20 42 49 4e 41 52 59 20  {INTEGER BINARY 
2030: 30 20 31 20 30 7d 0a 64 6f 5f 74 65 73 74 20 35  0 1 0}.do_test 5
2040: 2e 32 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 33  .2.2 {.  sqlite3
2050: 5f 74 61 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65  _table_column_me
2060: 74 61 64 61 74 61 20 64 62 32 20 6d 61 69 6e 20  tadata db2 main 
2070: 62 62 62 20 62 0a 7d 20 7b 7b 7d 20 42 49 4e 41  bbb b.} {{} BINA
2080: 52 59 20 30 20 30 20 30 7d 0a 0a 64 6f 5f 65 78  RY 0 0 0}..do_ex
2090: 65 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20 64  ecsql_test -db d
20a0: 62 32 20 35 2e 32 2e 33 20 7b 0a 20 20 53 45 4c  b2 5.2.3 {.  SEL
20b0: 45 43 54 20 27 6e 72 65 66 3d 27 20 7c 7c 20 6e  ECT 'nref=' || n
20c0: 52 65 66 2c 20 27 6e 73 63 68 65 6d 61 3d 27 20  Ref, 'nschema=' 
20d0: 7c 7c 20 6e 53 63 68 65 6d 61 2c 20 27 6e 64 65  || nSchema, 'nde
20e0: 6c 65 74 65 3d 27 20 7c 7c 20 6e 44 65 6c 65 74  lete=' || nDelet
20f0: 65 0a 20 20 46 52 4f 4d 20 73 63 68 65 6d 61 70  e.  FROM schemap
2100: 6f 6f 6c 3b 0a 7d 20 7b 6e 72 65 66 3d 36 20 6e  ool;.} {nref=6 n
2110: 73 63 68 65 6d 61 3d 31 20 6e 64 65 6c 65 74 65  schema=1 ndelete
2120: 3d 30 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  =0}..do_execsql_
2130: 74 65 73 74 20 2d 64 62 20 64 62 32 20 35 2e 32  test -db db2 5.2
2140: 2e 34 20 7b 0a 20 20 50 52 41 47 4d 41 20 69 6e  .4 {.  PRAGMA in
2150: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3b 0a 20  tegrity_check;. 
2160: 20 53 45 4c 45 43 54 20 27 6e 72 65 66 3d 27 20   SELECT 'nref=' 
2170: 7c 7c 20 6e 52 65 66 2c 20 27 6e 73 63 68 65 6d  || nRef, 'nschem
2180: 61 3d 27 20 7c 7c 20 6e 53 63 68 65 6d 61 2c 20  a=' || nSchema, 
2190: 27 6e 64 65 6c 65 74 65 3d 27 20 7c 7c 20 6e 44  'ndelete=' || nD
21a0: 65 6c 65 74 65 0a 20 20 46 52 4f 4d 20 73 63 68  elete.  FROM sch
21b0: 65 6d 61 70 6f 6f 6c 3b 0a 7d 20 7b 6f 6b 20 6e  emapool;.} {ok n
21c0: 72 65 66 3d 36 20 6e 73 63 68 65 6d 61 3d 31 20  ref=6 nschema=1 
21d0: 6e 64 65 6c 65 74 65 3d 35 7d 0a 0a 66 69 6e 69  ndelete=5}..fini
21e0: 73 68 5f 74 65 73 74 0a 0a                       sh_test..