/ Hex Artifact Content
Login

Artifact 38bbaefeb47e034a162856e664a0da3b95e6999b:


0000: 23 20 32 30 31 35 2d 30 31 2d 33 30 0a 23 0a 23  # 2015-01-30.#.#
0010: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
0020: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
0030: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
0040: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
0050: 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69  f.# a legal noti
0060: 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c  ce, here is a bl
0070: 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20 20 4d  essing:.#.#    M
0080: 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61  ay you do good a
0090: 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23 20 20  nd not evil..#  
00a0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
00b0: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
00c0: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
00d0: 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20 20 20  ive others..#   
00e0: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
00f0: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
0100: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
0110: 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a 2a 2a  u 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 0a 23 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 74 65 73 74   implements test
0180: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
0190: 72 61 72 79 2e 0a 23 0a 23 20 54 68 65 20 66 6f  rary..#.# The fo
01a0: 63 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65  cus of this file
01b0: 20 69 73 20 61 64 64 69 6e 67 20 65 78 74 72 61   is adding extra
01c0: 20 65 6e 74 72 69 65 73 20 69 6e 20 74 68 65 20   entries in the 
01d0: 73 79 6d 62 6f 6c 20 74 61 62 6c 65 0a 23 20 75  symbol table.# u
01e0: 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 74 65 73  sing sqlite3_tes
01f0: 74 5f 63 6f 6e 74 72 6f 6c 28 53 51 4c 49 54 45  t_control(SQLITE
0200: 5f 54 45 53 54 43 54 52 4c 5f 49 4e 49 54 4d 4f  _TESTCTRL_INITMO
0210: 44 45 29 20 61 6e 64 20 76 65 72 69 66 79 69 6e  DE) and verifyin
0220: 67 20 74 68 61 74 0a 23 20 53 51 4c 69 74 65 20  g that.# SQLite 
0230: 68 61 6e 64 6c 65 73 20 74 68 6f 73 65 20 61 73  handles those as
0240: 20 65 78 70 65 63 74 65 64 2e 0a 23 0a 0a 73 65   expected..#..se
0250: 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20  t testdir [file 
0260: 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a  dirname $argv0].
0270: 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f  source $testdir/
0280: 74 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20 74  tester.tcl.set t
0290: 65 73 74 70 72 65 66 69 78 20 69 6e 69 74 6d 6f  estprefix initmo
02a0: 64 65 0a 0a 23 20 43 72 65 61 74 65 20 61 20 62  de..# Create a b
02b0: 75 6e 63 68 20 6f 66 20 64 61 74 61 20 74 6f 20  unch of data to 
02c0: 73 6f 72 74 20 61 67 61 69 6e 73 74 0a 23 0a 64  sort against.#.d
02d0: 6f 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65 2d  o_test initmode-
02e0: 31 2e 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.0 {.  execsql 
02f0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
0300: 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52 20  LE t1(a INTEGER 
0310: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62 2c 20  PRIMARY KEY, b, 
0320: 63 2c 20 64 20 4e 4f 54 20 4e 55 4c 4c 29 3b 0a  c, d NOT NULL);.
0330: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
0340: 20 74 31 62 20 4f 4e 20 74 31 28 62 29 3b 0a 20   t1b ON t1(b);. 
0350: 20 20 20 43 52 45 41 54 45 20 55 4e 49 51 55 45     CREATE UNIQUE
0360: 20 49 4e 44 45 58 20 74 31 63 20 4f 4e 20 74 31   INDEX t1c ON t1
0370: 28 63 29 3b 0a 20 20 20 20 57 49 54 48 20 52 45  (c);.    WITH RE
0380: 43 55 52 53 49 56 45 20 63 28 69 29 20 41 53 20  CURSIVE c(i) AS 
0390: 28 56 41 4c 55 45 53 28 31 29 20 55 4e 49 4f 4e  (VALUES(1) UNION
03a0: 20 41 4c 4c 20 53 45 4c 45 43 54 20 69 2b 31 20   ALL SELECT i+1 
03b0: 46 52 4f 4d 20 63 20 57 48 45 52 45 20 69 3c 33  FROM c WHERE i<3
03c0: 30 29 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20  0).      INSERT 
03d0: 49 4e 54 4f 20 74 31 28 61 2c 62 2c 63 2c 64 29  INTO t1(a,b,c,d)
03e0: 20 53 45 4c 45 43 54 20 69 2c 31 30 30 30 2b 69   SELECT i,1000+i
03f0: 2c 32 30 30 30 2b 69 2c 33 30 30 30 2b 69 20 46  ,2000+i,3000+i F
0400: 52 4f 4d 20 63 3b 0a 20 20 7d 0a 20 20 73 65 74  ROM c;.  }.  set
0410: 20 74 31 5f 72 6f 6f 74 20 5b 64 62 20 6f 6e 65   t1_root [db one
0420: 20 7b 53 45 4c 45 43 54 20 72 6f 6f 74 70 61 67   {SELECT rootpag
0430: 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61  e FROM sqlite_ma
0440: 73 74 65 72 20 57 48 45 52 45 20 6e 61 6d 65 3d  ster WHERE name=
0450: 27 74 31 27 7d 5d 0a 20 20 73 65 74 20 74 31 61  't1'}].  set t1a
0460: 5f 72 6f 6f 74 20 5b 64 62 20 6f 6e 65 20 7b 53  _root [db one {S
0470: 45 4c 45 43 54 20 72 6f 6f 74 70 61 67 65 20 46  ELECT rootpage F
0480: 52 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65  ROM sqlite_maste
0490: 72 20 57 48 45 52 45 20 6e 61 6d 65 3d 27 74 31  r WHERE name='t1
04a0: 61 27 7d 5d 0a 20 20 73 65 74 20 74 31 62 5f 72  a'}].  set t1b_r
04b0: 6f 6f 74 20 5b 64 62 20 6f 6e 65 20 7b 53 45 4c  oot [db one {SEL
04c0: 45 43 54 20 72 6f 6f 74 70 61 67 65 20 46 52 4f  ECT rootpage FRO
04d0: 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20  M sqlite_master 
04e0: 57 48 45 52 45 20 6e 61 6d 65 3d 27 74 31 62 27  WHERE name='t1b'
04f0: 7d 5d 0a 0a 20 20 23 20 43 72 65 61 74 65 20 61  }]..  # Create a
0500: 20 73 68 61 64 6f 77 20 74 61 62 6c 65 20 74 68   shadow table th
0510: 61 74 20 75 73 65 73 20 74 68 65 20 73 61 6d 65  at uses the same
0520: 20 62 2d 74 72 65 65 20 61 73 20 74 31 20 62 75   b-tree as t1 bu
0530: 74 20 77 68 69 63 68 20 64 6f 65 73 0a 20 20 23  t which does.  #
0540: 20 6e 6f 74 20 68 61 76 65 20 74 68 65 20 69 6e   not have the in
0550: 64 65 78 65 73 0a 20 20 23 0a 20 20 73 71 6c 69  dexes.  #.  sqli
0560: 74 65 33 5f 74 65 73 74 5f 63 6f 6e 74 72 6f 6c  te3_test_control
0570: 20 53 51 4c 49 54 45 5f 54 45 53 54 43 54 52 4c   SQLITE_TESTCTRL
0580: 5f 49 4e 49 54 4d 4f 44 45 20 64 62 20 31 20 30  _INITMODE db 1 0
0590: 20 24 74 31 5f 72 6f 6f 74 0a 20 20 64 62 20 65   $t1_root.  db e
05a0: 76 61 6c 20 7b 43 52 45 41 54 45 20 54 41 42 4c  val {CREATE TABL
05b0: 45 20 78 74 31 28 61 2c 62 2c 63 2c 64 29 7d 0a  E xt1(a,b,c,d)}.
05c0: 20 20 73 71 6c 69 74 65 33 5f 74 65 73 74 5f 63    sqlite3_test_c
05d0: 6f 6e 74 72 6f 6c 20 53 51 4c 49 54 45 5f 54 45  ontrol SQLITE_TE
05e0: 53 54 43 54 52 4c 5f 49 4e 49 54 4d 4f 44 45 20  STCTRL_INITMODE 
05f0: 64 62 20 30 20 30 20 30 0a 0a 20 20 23 20 43 72  db 0 0 0..  # Cr
0600: 65 61 74 65 20 74 72 69 67 67 65 72 73 20 74 6f  eate triggers to
0610: 20 72 65 63 6f 72 64 20 63 68 61 6e 67 65 73 20   record changes 
0620: 74 6f 20 78 74 31 2e 0a 20 20 23 0a 20 20 64 62  to xt1..  #.  db
0630: 20 65 76 61 6c 20 7b 0a 20 20 20 20 43 52 45 41   eval {.    CREA
0640: 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20 63 68  TE TEMP TABLE ch
0650: 6e 67 6c 6f 67 28 64 65 73 63 20 54 45 58 54 29  nglog(desc TEXT)
0660: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 54 45 4d  ;.    CREATE TEM
0670: 50 20 54 52 49 47 47 45 52 20 78 74 31 5f 64 65  P TRIGGER xt1_de
0680: 6c 20 41 46 54 45 52 20 44 45 4c 45 54 45 20 4f  l AFTER DELETE O
0690: 4e 20 78 74 31 20 42 45 47 49 4e 0a 20 20 20 20  N xt1 BEGIN.    
06a0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 63 68    INSERT INTO ch
06b0: 6e 67 6c 6f 67 20 56 41 4c 55 45 53 28 0a 20 20  nglog VALUES(.  
06c0: 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28           printf(
06d0: 27 44 45 4c 45 54 45 20 74 31 3a 20 72 6f 77 69  'DELETE t1: rowi
06e0: 64 3d 25 64 2c 20 61 3d 25 73 2c 20 62 3d 25 73  d=%d, a=%s, b=%s
06f0: 2c 20 63 3d 25 73 2c 20 64 3d 25 73 27 2c 0a 20  , c=%s, d=%s',. 
0700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0710: 20 6f 6c 64 2e 72 6f 77 69 64 2c 20 71 75 6f 74   old.rowid, quot
0720: 65 28 6f 6c 64 2e 61 29 2c 20 71 75 6f 74 65 28  e(old.a), quote(
0730: 6f 6c 64 2e 62 29 2c 20 71 75 6f 74 65 28 6f 6c  old.b), quote(ol
0740: 64 2e 63 29 2c 0a 20 20 20 20 20 20 20 20 20 20  d.c),.          
0750: 20 20 20 20 20 20 20 20 71 75 6f 74 65 28 6f 6c          quote(ol
0760: 64 2e 64 29 29 29 3b 0a 20 20 20 20 45 4e 44 3b  d.d)));.    END;
0770: 0a 20 20 20 20 43 52 45 41 54 45 20 54 45 4d 50  .    CREATE TEMP
0780: 20 54 52 49 47 47 45 52 20 78 74 31 5f 69 6e 73   TRIGGER xt1_ins
0790: 20 41 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e   AFTER INSERT ON
07a0: 20 78 74 31 20 42 45 47 49 4e 0a 20 20 20 20 20   xt1 BEGIN.     
07b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 63 68 6e   INSERT INTO chn
07c0: 67 6c 6f 67 20 56 41 4c 55 45 53 28 0a 20 20 20  glog VALUES(.   
07d0: 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 27          printf('
07e0: 49 4e 53 45 52 54 20 74 31 3a 20 20 72 6f 77 69  INSERT t1:  rowi
07f0: 64 3d 25 64 2c 20 61 3d 25 73 2c 20 62 3d 25 73  d=%d, a=%s, b=%s
0800: 2c 20 63 3d 25 73 2c 20 64 3d 25 73 27 2c 0a 20  , c=%s, d=%s',. 
0810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0820: 20 6e 65 77 2e 72 6f 77 69 64 2c 20 71 75 6f 74   new.rowid, quot
0830: 65 28 6e 65 77 2e 61 29 2c 20 71 75 6f 74 65 28  e(new.a), quote(
0840: 6e 65 77 2e 62 29 2c 20 71 75 6f 74 65 28 6e 65  new.b), quote(ne
0850: 77 2e 63 29 2c 0a 20 20 20 20 20 20 20 20 20 20  w.c),.          
0860: 20 20 20 20 20 20 20 20 71 75 6f 74 65 28 6e 65          quote(ne
0870: 77 2e 64 29 29 29 3b 0a 20 20 20 20 45 4e 44 3b  w.d)));.    END;
0880: 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 54 68 65  .  }.} {}..# The
0890: 20 78 74 31 20 74 61 62 6c 65 20 68 61 73 20 73   xt1 table has s
08a0: 65 70 61 72 61 74 65 20 78 74 31 2e 72 6f 77 69  eparate xt1.rowi
08b0: 64 20 61 6e 64 20 78 74 31 2e 61 20 63 6f 6c 75  d and xt1.a colu
08c0: 6d 6e 73 2e 20 20 54 68 65 20 78 74 31 2e 72 6f  mns.  The xt1.ro
08d0: 77 69 64 0a 23 20 63 6f 6c 75 6d 6e 20 63 6f 72  wid.# column cor
08e0: 72 65 73 70 6f 6e 64 73 20 74 6f 20 74 31 2e 72  responds to t1.r
08f0: 6f 77 69 64 20 61 6e 64 20 74 31 2e 61 2c 20 62  owid and t1.a, b
0900: 75 74 20 74 68 65 20 78 74 31 2e 61 20 63 6f 6c  ut the xt1.a col
0910: 75 6d 6e 20 69 73 20 61 6c 77 61 79 73 0a 23 20  umn is always.# 
0920: 4e 55 4c 4c 0a 23 0a 64 6f 5f 65 78 65 63 73 71  NULL.#.do_execsq
0930: 6c 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65 2d  l_test initmode-
0940: 31 2e 31 20 7b 0a 20 20 53 45 4c 45 43 54 20 72  1.1 {.  SELECT r
0950: 6f 77 69 64 20 46 52 4f 4d 20 78 74 31 20 57 48  owid FROM xt1 WH
0960: 45 52 45 20 61 20 49 53 20 4e 4f 54 20 4e 55 4c  ERE a IS NOT NUL
0970: 4c 3b 0a 7d 20 7b 7d 0a 64 6f 5f 65 78 65 63 73  L;.} {}.do_execs
0980: 71 6c 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65  ql_test initmode
0990: 2d 31 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20  -1.2 {.  SELECT 
09a0: 61 2c 62 2c 63 2c 64 20 46 52 4f 4d 20 74 31 20  a,b,c,d FROM t1 
09b0: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 72 6f  EXCEPT SELECT ro
09c0: 77 69 64 2c 62 2c 63 2c 64 20 46 52 4f 4d 20 78  wid,b,c,d FROM x
09d0: 74 31 3b 0a 20 20 53 45 4c 45 43 54 20 72 6f 77  t1;.  SELECT row
09e0: 69 64 2c 62 2c 63 2c 64 20 46 52 4f 4d 20 78 74  id,b,c,d FROM xt
09f0: 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20  1 EXCEPT SELECT 
0a00: 61 2c 62 2c 63 2c 64 20 46 52 4f 4d 20 74 31 3b  a,b,c,d FROM t1;
0a10: 0a 7d 20 7b 7d 0a 0a 0a 23 20 4d 61 6b 65 20 63  .} {}...# Make c
0a20: 68 61 6e 67 65 73 20 76 69 61 20 74 68 65 20 78  hanges via the x
0a30: 74 31 20 73 68 61 64 6f 77 20 74 61 62 6c 65 2e  t1 shadow table.
0a40: 20 20 54 68 69 73 20 77 69 6c 6c 20 6e 6f 74 20    This will not 
0a50: 75 70 64 61 74 65 20 74 68 65 0a 23 20 69 6e 64  update the.# ind
0a60: 65 78 65 73 20 6f 6e 20 74 31 20 6e 6f 72 20 63  exes on t1 nor c
0a70: 68 65 63 6b 20 74 68 65 20 75 6e 69 71 75 65 6e  heck the uniquen
0a80: 65 73 73 20 63 6f 6e 73 74 72 61 69 6e 74 20 6f  ess constraint o
0a90: 6e 20 74 31 2e 63 20 6e 6f 72 20 63 68 65 63 6b  n t1.c nor check
0aa0: 0a 23 20 74 68 65 20 4e 4f 54 20 4e 55 4c 4c 20  .# the NOT NULL 
0ab0: 63 6f 6e 73 74 72 61 69 6e 74 20 6f 6e 20 74 31  constraint on t1
0ac0: 2e 64 2c 20 72 65 73 75 6c 74 69 6e 67 20 69 6e  .d, resulting in
0ad0: 20 61 20 6c 6f 67 69 63 61 6c 6c 79 20 69 6e 63   a logically inc
0ae0: 6f 6e 73 69 73 74 65 6e 74 0a 23 20 64 61 74 61  onsistent.# data
0af0: 62 61 73 65 2e 0a 23 0a 64 6f 5f 65 78 65 63 73  base..#.do_execs
0b00: 71 6c 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65  ql_test initmode
0b10: 2d 31 2e 33 20 7b 0a 20 20 44 45 4c 45 54 45 20  -1.3 {.  DELETE 
0b20: 46 52 4f 4d 20 78 74 31 20 57 48 45 52 45 20 72  FROM xt1 WHERE r
0b30: 6f 77 69 64 3d 35 3b 0a 20 20 49 4e 53 45 52 54  owid=5;.  INSERT
0b40: 20 49 4e 54 4f 20 78 74 31 28 72 6f 77 69 64 2c   INTO xt1(rowid,
0b50: 61 2c 62 2c 63 2c 64 29 20 56 41 4c 55 45 53 28  a,b,c,d) VALUES(
0b60: 39 39 2c 27 68 65 6c 6c 6f 27 2c 31 30 39 39 2c  99,'hello',1099,
0b70: 32 30 32 32 2c 4e 55 4c 4c 29 3b 0a 20 20 53 45  2022,NULL);.  SE
0b80: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 63 68 6e 67  LECT * FROM chng
0b90: 6c 6f 67 20 4f 52 44 45 52 20 42 59 20 72 6f 77  log ORDER BY row
0ba0: 69 64 3b 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20  id;.} [list \.  
0bb0: 7b 44 45 4c 45 54 45 20 74 31 3a 20 72 6f 77 69  {DELETE t1: rowi
0bc0: 64 3d 35 2c 20 61 3d 4e 55 4c 4c 2c 20 62 3d 31  d=5, a=NULL, b=1
0bd0: 30 30 35 2c 20 63 3d 32 30 30 35 2c 20 64 3d 33  005, c=2005, d=3
0be0: 30 30 35 7d 20 5c 0a 20 20 7b 49 4e 53 45 52 54  005} \.  {INSERT
0bf0: 20 74 31 3a 20 20 72 6f 77 69 64 3d 39 39 2c 20   t1:  rowid=99, 
0c00: 61 3d 27 68 65 6c 6c 6f 27 2c 20 62 3d 31 30 39  a='hello', b=109
0c10: 39 2c 20 63 3d 32 30 32 32 2c 20 64 3d 4e 55 4c  9, c=2022, d=NUL
0c20: 4c 7d 20 5c 0a 5d 0a 0a 64 6f 5f 65 78 65 63 73  L} \.]..do_execs
0c30: 71 6c 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65  ql_test initmode
0c40: 2d 31 2e 34 61 20 7b 0a 20 20 50 52 41 47 4d 41  -1.4a {.  PRAGMA
0c50: 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b   integrity_check
0c60: 3b 0a 7d 20 7b 2f 4e 55 4c 4c 20 76 61 6c 75 65  ;.} {/NULL value
0c70: 20 69 6e 20 74 31 2e 64 2f 7d 0a 64 6f 5f 65 78   in t1.d/}.do_ex
0c80: 65 63 73 71 6c 5f 74 65 73 74 20 69 6e 69 74 6d  ecsql_test initm
0c90: 6f 64 65 2d 31 2e 34 62 20 7b 0a 20 20 50 52 41  ode-1.4b {.  PRA
0ca0: 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68  GMA integrity_ch
0cb0: 65 63 6b 3b 0a 7d 20 7b 2f 72 6f 77 20 23 20 6d  eck;.} {/row # m
0cc0: 69 73 73 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65  issing from inde
0cd0: 78 20 74 31 62 2f 7d 0a 64 6f 5f 65 78 65 63 73  x t1b/}.do_execs
0ce0: 71 6c 5f 74 65 73 74 20 69 6e 69 74 6d 6f 64 65  ql_test initmode
0cf0: 2d 31 2e 34 63 20 7b 0a 20 20 50 52 41 47 4d 41  -1.4c {.  PRAGMA
0d00: 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b   integrity_check
0d10: 3b 0a 7d 20 7b 2f 72 6f 77 20 23 20 6d 69 73 73  ;.} {/row # miss
0d20: 69 6e 67 20 66 72 6f 6d 20 69 6e 64 65 78 20 74  ing from index t
0d30: 31 63 2f 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73  1c/}..finish_tes
0d40: 74 0a                                            t.