/ Hex Artifact Content
Login

Artifact 373a9eb8fcbd58bf87affec6a88c6353038f98a5d25be5ab75a0b9636c462a36:


0000: 23 20 32 30 31 38 2d 30 34 2d 32 38 0a 23 0a 23  # 2018-04-28.#.#
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 20 54 65 73 74 20 63 61 73 65 73 20  **.# Test cases 
0170: 66 6f 72 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  for SQLITE_DBCON
0180: 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
0190: 53 45 0a 23 0a 0a 73 65 74 20 74 65 73 74 64 69  SE.#..set testdi
01a0: 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  r [file dirname 
01b0: 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24  $argv0].source $
01c0: 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74  testdir/tester.t
01d0: 63 6c 0a 73 65 74 20 74 65 73 74 70 72 65 66 69  cl.set testprefi
01e0: 78 20 72 65 73 65 74 64 62 0a 0a 64 6f 5f 6e 6f  x resetdb..do_no
01f0: 74 5f 75 73 65 5f 63 6f 64 65 63 0a 0a 69 66 63  t_use_codec..ifc
0200: 61 70 61 62 6c 65 20 21 76 74 61 62 7c 7c 21 63  apable !vtab||!c
0210: 6f 6d 70 6f 75 6e 64 20 7b 0a 20 20 66 69 6e 69  ompound {.  fini
0220: 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75 72 6e  sh_test.  return
0230: 0a 7d 0a 0a 23 20 49 6e 20 74 68 65 20 22 69 6e  .}..# In the "in
0240: 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61 6c 22 20  memory_journal" 
0250: 70 65 72 6d 75 74 61 74 69 6f 6e 2c 20 65 61 63  permutation, eac
0260: 68 20 6e 65 77 20 63 6f 6e 6e 65 63 74 69 6f 6e  h new connection
0270: 20 65 78 65 63 75 74 65 73 20 0a 23 20 22 50 52   executes .# "PR
0280: 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  AGMA journal_mod
0290: 65 20 3d 20 6d 65 6d 6f 72 79 22 2e 20 54 68 69  e = memory". Thi
02a0: 73 20 66 61 69 6c 73 20 77 69 74 68 20 53 51 4c  s fails with SQL
02b0: 49 54 45 5f 42 55 53 59 20 69 66 20 61 74 74 65  ITE_BUSY if atte
02c0: 6d 70 74 65 64 0a 23 20 6f 6e 20 61 20 77 61 6c  mpted.# on a wal
02d0: 20 6d 6f 64 65 20 64 61 74 61 62 61 73 65 20 77   mode database w
02e0: 69 74 68 20 65 78 69 73 74 69 6e 67 20 63 6f 6e  ith existing con
02f0: 6e 65 63 74 69 6f 6e 73 2e 20 46 6f 72 20 74 68  nections. For th
0300: 69 73 20 61 6e 64 20 61 20 66 65 77 0a 23 20 6f  is and a few.# o
0310: 74 68 65 72 20 72 65 61 73 6f 6e 73 2c 20 74 68  ther reasons, th
0320: 69 73 20 74 65 73 74 20 69 73 20 6e 6f 74 20 72  is test is not r
0330: 75 6e 20 61 73 20 70 61 72 74 20 6f 66 20 22 69  un as part of "i
0340: 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61 6c 22  nmemory_journal"
0350: 2e 0a 23 0a 23 20 50 65 72 6d 75 74 61 74 69 6f  ..#.# Permutatio
0360: 6e 20 22 6a 6f 75 72 6e 61 6c 74 65 73 74 22 20  n "journaltest" 
0370: 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74  does not support
0380: 20 77 61 6c 20 6d 6f 64 65 2e 0a 23 0a 69 66 20   wal mode..#.if 
0390: 7b 5b 70 65 72 6d 75 74 61 74 69 6f 6e 5d 3d 3d  {[permutation]==
03a0: 22 69 6e 6d 65 6d 6f 72 79 5f 6a 6f 75 72 6e 61  "inmemory_journa
03b0: 6c 22 0a 20 7c 7c 20 5b 70 65 72 6d 75 74 61 74  l". || [permutat
03c0: 69 6f 6e 5d 3d 3d 22 6a 6f 75 72 6e 61 6c 74 65  ion]=="journalte
03d0: 73 74 22 0a 7d 20 7b 0a 20 20 66 69 6e 69 73 68  st".} {.  finish
03e0: 5f 74 65 73 74 0a 20 20 72 65 74 75 72 6e 0a 7d  _test.  return.}
03f0: 0a 0a 23 20 43 72 65 61 74 65 20 61 20 73 61 6d  ..# Create a sam
0400: 70 6c 65 20 64 61 74 61 62 61 73 65 0a 64 6f 5f  ple database.do_
0410: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 31 30 30  execsql_test 100
0420: 20 7b 0a 20 20 50 52 41 47 4d 41 20 61 75 74 6f   {.  PRAGMA auto
0430: 5f 76 61 63 75 75 6d 20 3d 20 30 3b 0a 20 20 50  _vacuum = 0;.  P
0440: 52 41 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 3d  RAGMA page_size=
0450: 34 30 39 36 3b 0a 20 20 43 52 45 41 54 45 20 54  4096;.  CREATE T
0460: 41 42 4c 45 20 74 31 28 61 2c 62 29 3b 0a 20 20  ABLE t1(a,b);.  
0470: 57 49 54 48 20 52 45 43 55 52 53 49 56 45 20 63  WITH RECURSIVE c
0480: 28 78 29 20 41 53 20 28 56 41 4c 55 45 53 28 31  (x) AS (VALUES(1
0490: 29 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45  ) UNION ALL SELE
04a0: 43 54 20 78 2b 31 20 46 52 4f 4d 20 63 20 57 48  CT x+1 FROM c WH
04b0: 45 52 45 20 78 3c 32 30 29 0a 20 20 20 20 49 4e  ERE x<20).    IN
04c0: 53 45 52 54 20 49 4e 54 4f 20 74 31 28 61 2c 62  SERT INTO t1(a,b
04d0: 29 20 53 45 4c 45 43 54 20 78 2c 20 72 61 6e 64  ) SELECT x, rand
04e0: 6f 6d 62 6c 6f 62 28 33 30 30 29 20 46 52 4f 4d  omblob(300) FROM
04f0: 20 63 3b 0a 20 20 43 52 45 41 54 45 20 49 4e 44   c;.  CREATE IND
0500: 45 58 20 74 31 61 20 4f 4e 20 74 31 28 61 29 3b  EX t1a ON t1(a);
0510: 0a 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  .  CREATE INDEX 
0520: 74 31 62 20 4f 4e 20 74 31 28 62 29 3b 0a 20 20  t1b ON t1(b);.  
0530: 53 45 4c 45 43 54 20 73 75 6d 28 61 29 2c 20 73  SELECT sum(a), s
0540: 75 6d 28 6c 65 6e 67 74 68 28 62 29 29 20 46 52  um(length(b)) FR
0550: 4f 4d 20 74 31 3b 0a 20 20 50 52 41 47 4d 41 20  OM t1;.  PRAGMA 
0560: 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63 6b 3b  integrity_check;
0570: 0a 20 20 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61  .  PRAGMA journa
0580: 6c 5f 6d 6f 64 65 3b 0a 20 20 50 52 41 47 4d 41  l_mode;.  PRAGMA
0590: 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a 7d 20 7b   page_count;.} {
05a0: 32 31 30 20 36 30 30 30 20 6f 6b 20 64 65 6c 65  210 6000 ok dele
05b0: 74 65 20 38 7d 0a 0a 23 20 56 65 72 69 66 79 20  te 8}..# Verify 
05c0: 74 68 61 74 20 74 68 65 20 73 61 6d 65 20 63 6f  that the same co
05d0: 6e 74 65 6e 74 20 69 73 20 73 65 65 6e 20 66 72  ntent is seen fr
05e0: 6f 6d 20 61 20 73 65 70 61 72 61 74 65 20 64 61  om a separate da
05f0: 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
0600: 6e 0a 73 71 6c 69 74 65 33 20 64 62 32 20 74 65  n.sqlite3 db2 te
0610: 73 74 2e 64 62 0a 64 6f 5f 74 65 73 74 20 31 31  st.db.do_test 11
0620: 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  0 {.  execsql {.
0630: 20 20 20 20 53 45 4c 45 43 54 20 73 75 6d 28 61      SELECT sum(a
0640: 29 2c 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29  ), sum(length(b)
0650: 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 50  ) FROM t1;.    P
0660: 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f  RAGMA integrity_
0670: 63 68 65 63 6b 3b 0a 20 20 20 20 50 52 41 47 4d  check;.    PRAGM
0680: 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3b 0a  A journal_mode;.
0690: 20 20 20 20 50 52 41 47 4d 41 20 70 61 67 65 5f      PRAGMA page_
06a0: 63 6f 75 6e 74 3b 0a 20 20 7d 20 64 62 32 0a 7d  count;.  } db2.}
06b0: 20 7b 32 31 30 20 36 30 30 30 20 6f 6b 20 64 65   {210 6000 ok de
06c0: 6c 65 74 65 20 38 7d 0a 0a 64 6f 5f 74 65 73 74  lete 8}..do_test
06d0: 20 32 30 30 20 7b 0a 20 20 23 20 54 68 6f 72 6f   200 {.  # Thoro
06e0: 75 67 68 6c 79 20 63 6f 72 72 75 70 74 20 74 68  ughly corrupt th
06f0: 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
0700: 62 79 20 6f 76 65 72 77 72 69 74 69 6e 67 20 74  by overwriting t
0710: 68 65 20 66 69 72 73 74 0a 20 20 23 20 70 61 67  he first.  # pag
0720: 65 20 77 69 74 68 20 72 61 6e 64 6f 6d 6e 65 73  e with randomnes
0730: 73 2e 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f  s..  sqlite3_db_
0740: 63 6f 6e 66 69 67 20 64 62 20 44 45 46 45 4e 53  config db DEFENS
0750: 49 56 45 20 30 0a 20 20 63 61 74 63 68 73 71 6c  IVE 0.  catchsql
0760: 20 7b 0a 20 20 20 20 55 50 44 41 54 45 20 73 71   {.    UPDATE sq
0770: 6c 69 74 65 5f 64 62 70 61 67 65 20 53 45 54 20  lite_dbpage SET 
0780: 64 61 74 61 3d 72 61 6e 64 6f 6d 62 6c 6f 62 28  data=randomblob(
0790: 34 30 39 36 29 20 57 48 45 52 45 20 70 67 6e 6f  4096) WHERE pgno
07a0: 3d 31 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 71  =1;.    PRAGMA q
07b0: 75 69 63 6b 5f 63 68 65 63 6b 3b 0a 20 20 7d 0a  uick_check;.  }.
07c0: 7d 20 7b 31 20 7b 75 6e 73 75 70 70 6f 72 74 65  } {1 {unsupporte
07d0: 64 20 66 69 6c 65 20 66 6f 72 6d 61 74 7d 7d 0a  d file format}}.
07e0: 64 6f 5f 74 65 73 74 20 32 30 31 20 7b 0a 20 20  do_test 201 {.  
07f0: 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 50  catchsql {.    P
0800: 52 41 47 4d 41 20 71 75 69 63 6b 5f 63 68 65 63  RAGMA quick_chec
0810: 6b 3b 0a 20 20 7d 20 64 62 32 0a 7d 20 7b 31 20  k;.  } db2.} {1 
0820: 7b 75 6e 73 75 70 70 6f 72 74 65 64 20 66 69 6c  {unsupported fil
0830: 65 20 66 6f 72 6d 61 74 7d 7d 0a 0a 64 6f 5f 74  e format}}..do_t
0840: 65 73 74 20 32 31 30 20 7b 0a 20 20 23 20 52 65  est 210 {.  # Re
0850: 73 65 74 20 74 68 65 20 64 61 74 61 62 61 73 65  set the database
0860: 20 66 69 6c 65 20 75 73 69 6e 67 20 53 51 4c 49   file using SQLI
0870: 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45  TE_DBCONFIG_RESE
0880: 54 5f 44 41 54 41 42 41 53 45 0a 20 20 73 71 6c  T_DATABASE.  sql
0890: 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 20 64  ite3_db_config d
08a0: 62 20 52 45 53 45 54 5f 44 42 20 31 0a 20 20 64  b RESET_DB 1.  d
08b0: 62 20 65 76 61 6c 20 56 41 43 55 55 4d 0a 20 20  b eval VACUUM.  
08c0: 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
08d0: 67 20 64 62 20 52 45 53 45 54 5f 44 42 20 30 0a  g db RESET_DB 0.
08e0: 0a 20 20 23 20 56 65 72 69 66 79 20 74 68 61 74  .  # Verify that
08f0: 20 74 68 65 20 72 65 73 65 74 20 74 6f 6f 6b 2c   the reset took,
0900: 20 65 76 65 6e 20 6f 6e 20 74 68 65 20 73 65 70   even on the sep
0910: 61 72 61 74 65 20 64 61 74 61 62 61 73 65 20 63  arate database c
0920: 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 63 61 74 63  onnection.  catc
0930: 68 73 71 6c 20 7b 0a 20 20 20 20 20 50 52 41 47  hsql {.     PRAG
0940: 4d 41 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a 20  MA page_count;. 
0950: 20 20 20 20 50 52 41 47 4d 41 20 70 61 67 65 5f      PRAGMA page_
0960: 73 69 7a 65 3b 0a 20 20 20 20 20 50 52 41 47 4d  size;.     PRAGM
0970: 41 20 71 75 69 63 6b 5f 63 68 65 63 6b 3b 0a 20  A quick_check;. 
0980: 20 20 20 20 50 52 41 47 4d 41 20 6a 6f 75 72 6e      PRAGMA journ
0990: 61 6c 5f 6d 6f 64 65 3b 0a 20 20 7d 20 64 62 32  al_mode;.  } db2
09a0: 0a 7d 20 7b 30 20 7b 31 20 34 30 39 36 20 6f 6b  .} {0 {1 4096 ok
09b0: 20 64 65 6c 65 74 65 7d 7d 0a 0a 23 20 44 65 6c   delete}}..# Del
09c0: 65 74 65 20 74 68 65 20 6f 6c 64 20 63 6f 6e 6e  ete the old conn
09d0: 65 63 74 69 6f 6e 73 20 61 6e 64 20 64 61 74 61  ections and data
09e0: 62 61 73 65 20 61 6e 64 20 73 74 61 72 74 20 6f  base and start o
09f0: 76 65 72 20 61 67 61 69 6e 0a 23 20 77 69 74 68  ver again.# with
0a00: 20 61 20 64 69 66 66 65 72 65 6e 74 20 70 61 67   a different pag
0a10: 65 20 73 69 7a 65 20 61 6e 64 20 69 6e 20 57 41  e size and in WA
0a20: 4c 20 6d 6f 64 65 2e 0a 23 0a 64 62 20 63 6c 6f  L mode..#.db clo
0a30: 73 65 0a 64 62 32 20 63 6c 6f 73 65 0a 66 6f 72  se.db2 close.for
0a40: 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62  cedelete test.db
0a50: 0a 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74  .sqlite3 db test
0a60: 2e 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  .db.do_execsql_t
0a70: 65 73 74 20 33 30 30 20 7b 0a 20 20 50 52 41 47  est 300 {.  PRAG
0a80: 4d 41 20 61 75 74 6f 5f 76 61 63 75 75 6d 20 3d  MA auto_vacuum =
0a90: 20 30 3b 0a 20 20 50 52 41 47 4d 41 20 70 61 67   0;.  PRAGMA pag
0aa0: 65 5f 73 69 7a 65 3d 38 31 39 32 3b 0a 20 20 50  e_size=8192;.  P
0ab0: 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f  RAGMA journal_mo
0ac0: 64 65 3d 57 41 4c 3b 0a 20 20 43 52 45 41 54 45  de=WAL;.  CREATE
0ad0: 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 3b 0a   TABLE t1(a,b);.
0ae0: 20 20 57 49 54 48 20 52 45 43 55 52 53 49 56 45    WITH RECURSIVE
0af0: 20 63 28 78 29 20 41 53 20 28 56 41 4c 55 45 53   c(x) AS (VALUES
0b00: 28 31 29 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45  (1) UNION ALL SE
0b10: 4c 45 43 54 20 78 2b 31 20 46 52 4f 4d 20 63 20  LECT x+1 FROM c 
0b20: 57 48 45 52 45 20 78 3c 32 30 29 0a 20 20 20 20  WHERE x<20).    
0b30: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28 61  INSERT INTO t1(a
0b40: 2c 62 29 20 53 45 4c 45 43 54 20 78 2c 20 72 61  ,b) SELECT x, ra
0b50: 6e 64 6f 6d 62 6c 6f 62 28 31 33 30 30 29 20 46  ndomblob(1300) F
0b60: 52 4f 4d 20 63 3b 0a 20 20 43 52 45 41 54 45 20  ROM c;.  CREATE 
0b70: 49 4e 44 45 58 20 74 31 61 20 4f 4e 20 74 31 28  INDEX t1a ON t1(
0b80: 61 29 3b 0a 20 20 43 52 45 41 54 45 20 49 4e 44  a);.  CREATE IND
0b90: 45 58 20 74 31 62 20 4f 4e 20 74 31 28 62 29 3b  EX t1b ON t1(b);
0ba0: 0a 20 20 53 45 4c 45 43 54 20 73 75 6d 28 61 29  .  SELECT sum(a)
0bb0: 2c 20 73 75 6d 28 6c 65 6e 67 74 68 28 62 29 29  , sum(length(b))
0bc0: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 50 52 41 47   FROM t1;.  PRAG
0bd0: 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  MA integrity_che
0be0: 63 6b 3b 0a 20 20 50 52 41 47 4d 41 20 6a 6f 75  ck;.  PRAGMA jou
0bf0: 72 6e 61 6c 5f 6d 6f 64 65 3b 0a 20 20 50 52 41  rnal_mode;.  PRA
0c00: 47 4d 41 20 70 61 67 65 5f 73 69 7a 65 3b 0a 20  GMA page_size;. 
0c10: 20 50 52 41 47 4d 41 20 70 61 67 65 5f 63 6f 75   PRAGMA page_cou
0c20: 6e 74 3b 0a 7d 20 7b 77 61 6c 20 32 31 30 20 32  nt;.} {wal 210 2
0c30: 36 30 30 30 20 6f 6b 20 77 61 6c 20 38 31 39 32  6000 ok wal 8192
0c40: 20 31 32 7d 0a 73 71 6c 69 74 65 33 20 64 62 32   12}.sqlite3 db2
0c50: 20 74 65 73 74 2e 64 62 0a 64 6f 5f 74 65 73 74   test.db.do_test
0c60: 20 33 31 30 20 7b 0a 20 20 65 78 65 63 73 71 6c   310 {.  execsql
0c70: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 73 75   {.    SELECT su
0c80: 6d 28 61 29 2c 20 73 75 6d 28 6c 65 6e 67 74 68  m(a), sum(length
0c90: 28 62 29 29 20 46 52 4f 4d 20 74 31 3b 0a 20 20  (b)) FROM t1;.  
0ca0: 20 20 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69    PRAGMA integri
0cb0: 74 79 5f 63 68 65 63 6b 3b 0a 20 20 20 20 50 52  ty_check;.    PR
0cc0: 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64  AGMA journal_mod
0cd0: 65 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 70 61  e;.    PRAGMA pa
0ce0: 67 65 5f 73 69 7a 65 3b 0a 20 20 20 20 50 52 41  ge_size;.    PRA
0cf0: 47 4d 41 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a  GMA page_count;.
0d00: 20 20 7d 20 64 62 32 0a 7d 20 7b 32 31 30 20 32    } db2.} {210 2
0d10: 36 30 30 30 20 6f 6b 20 77 61 6c 20 38 31 39 32  6000 ok wal 8192
0d20: 20 31 32 7d 0a 0a 23 20 43 6f 72 72 75 70 74 20   12}..# Corrupt 
0d30: 74 68 65 20 64 61 74 61 62 61 73 65 20 61 67 61  the database aga
0d40: 69 6e 0a 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  in.sqlite3_db_co
0d50: 6e 66 69 67 20 64 62 20 44 45 46 45 4e 53 49 56  nfig db DEFENSIV
0d60: 45 20 30 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f  E 0.do_catchsql_
0d70: 74 65 73 74 20 33 32 30 20 7b 0a 20 20 55 50 44  test 320 {.  UPD
0d80: 41 54 45 20 73 71 6c 69 74 65 5f 64 62 70 61 67  ATE sqlite_dbpag
0d90: 65 20 53 45 54 20 64 61 74 61 3d 72 61 6e 64 6f  e SET data=rando
0da0: 6d 62 6c 6f 62 28 38 31 39 32 29 20 57 48 45 52  mblob(8192) WHER
0db0: 45 20 70 67 6e 6f 3d 31 3b 0a 20 20 50 52 41 47  E pgno=1;.  PRAG
0dc0: 4d 41 20 71 75 69 63 6b 5f 63 68 65 63 6b 0a 7d  MA quick_check.}
0dd0: 20 7b 31 20 7b 66 69 6c 65 20 69 73 20 6e 6f 74   {1 {file is not
0de0: 20 61 20 64 61 74 61 62 61 73 65 7d 7d 0a 0a 64   a database}}..d
0df0: 6f 5f 74 65 73 74 20 33 33 30 20 7b 0a 20 20 63  o_test 330 {.  c
0e00: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 50 52  atchsql {.    PR
0e10: 41 47 4d 41 20 71 75 69 63 6b 5f 63 68 65 63 6b  AGMA quick_check
0e20: 0a 20 20 7d 20 64 62 32 0a 7d 20 7b 31 20 7b 66  .  } db2.} {1 {f
0e30: 69 6c 65 20 69 73 20 6e 6f 74 20 61 20 64 61 74  ile is not a dat
0e40: 61 62 61 73 65 7d 7d 0a 0a 64 62 32 20 63 61 63  abase}}..db2 cac
0e50: 68 65 20 66 6c 75 73 68 20 20 20 20 20 20 20 20  he flush        
0e60: 20 3b 23 20 52 65 71 75 69 72 65 64 20 62 79 20   ;# Required by 
0e70: 70 65 72 6d 75 74 61 74 69 6f 6e 20 22 70 72 65  permutation "pre
0e80: 70 61 72 65 22 2e 0a 0a 23 20 52 65 73 65 74 20  pare"...# Reset 
0e90: 74 68 65 20 64 61 74 61 62 61 73 65 20 79 65 74  the database yet
0ea0: 20 61 67 61 69 6e 2e 20 20 56 65 72 69 66 79 20   again.  Verify 
0eb0: 74 68 61 74 20 74 68 65 20 70 61 67 65 20 73 69  that the page si
0ec0: 7a 65 20 61 6e 64 0a 23 20 6a 6f 75 72 6e 61 6c  ze and.# journal
0ed0: 20 6d 6f 64 65 20 61 72 65 20 70 72 65 73 65 72   mode are preser
0ee0: 76 65 64 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 34  ved..#.do_test 4
0ef0: 30 30 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 64  00 {.  sqlite3_d
0f00: 62 5f 63 6f 6e 66 69 67 20 64 62 20 52 45 53 45  b_config db RESE
0f10: 54 5f 44 42 20 31 0a 20 20 64 62 20 65 76 61 6c  T_DB 1.  db eval
0f20: 20 56 41 43 55 55 4d 0a 20 20 73 71 6c 69 74 65   VACUUM.  sqlite
0f30: 33 5f 64 62 5f 63 6f 6e 66 69 67 20 64 62 20 52  3_db_config db R
0f40: 45 53 45 54 5f 44 42 20 30 0a 20 20 63 61 74 63  ESET_DB 0.  catc
0f50: 68 73 71 6c 20 7b 0a 20 20 20 20 20 50 52 41 47  hsql {.     PRAG
0f60: 4d 41 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a 20  MA page_count;. 
0f70: 20 20 20 20 50 52 41 47 4d 41 20 70 61 67 65 5f      PRAGMA page_
0f80: 73 69 7a 65 3b 0a 20 20 20 20 20 50 52 41 47 4d  size;.     PRAGM
0f90: 41 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 3b 0a  A journal_mode;.
0fa0: 20 20 20 20 20 50 52 41 47 4d 41 20 71 75 69 63       PRAGMA quic
0fb0: 6b 5f 63 68 65 63 6b 3b 0a 20 20 7d 20 64 62 32  k_check;.  } db2
0fc0: 0a 7d 20 7b 30 20 7b 31 20 38 31 39 32 20 77 61  .} {0 {1 8192 wa
0fd0: 6c 20 6f 6b 7d 7d 0a 64 62 32 20 63 6c 6f 73 65  l ok}}.db2 close
0fe0: 0a 0a 23 20 52 65 73 65 74 20 74 68 65 20 64 61  ..# Reset the da
0ff0: 74 61 62 61 73 65 20 79 65 74 20 61 67 61 69 6e  tabase yet again
1000: 2e 20 54 68 69 73 20 74 69 6d 65 20 69 6d 6d 65  . This time imme
1010: 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 69 74  diately after it
1020: 20 69 73 20 63 6c 6f 73 65 64 0a 23 20 61 6e 64   is closed.# and
1030: 20 72 65 6f 70 65 6e 65 64 2e 20 53 6f 20 74 68   reopened. So th
1040: 61 74 20 74 68 65 20 56 41 43 55 55 4d 20 69 73  at the VACUUM is
1050: 20 74 68 65 20 66 69 72 73 74 20 73 74 61 74 65   the first state
1060: 6d 65 6e 74 20 72 75 6e 2e 0a 23 0a 64 62 20 63  ment run..#.db c
1070: 6c 6f 73 65 0a 73 71 6c 69 74 65 33 20 64 62 20  lose.sqlite3 db 
1080: 74 65 73 74 2e 64 62 0a 64 6f 5f 74 65 73 74 20  test.db.do_test 
1090: 35 30 30 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  500 {.  sqlite3_
10a0: 66 69 6e 61 6c 69 7a 65 20 5b 0a 20 20 20 20 73  finalize [.    s
10b0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 64  qlite3_prepare d
10c0: 62 20 22 53 45 4c 45 43 54 20 31 20 46 52 4f 4d  b "SELECT 1 FROM
10d0: 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 4c   sqlite_master L
10e0: 49 4d 49 54 20 31 22 20 2d 31 20 74 61 69 6c 0a  IMIT 1" -1 tail.
10f0: 20 20 5d 0a 20 20 73 71 6c 69 74 65 33 5f 64 62    ].  sqlite3_db
1100: 5f 63 6f 6e 66 69 67 20 64 62 20 52 45 53 45 54  _config db RESET
1110: 5f 44 42 20 31 0a 20 20 64 62 20 65 76 61 6c 20  _DB 1.  db eval 
1120: 56 41 43 55 55 4d 0a 20 20 73 71 6c 69 74 65 33  VACUUM.  sqlite3
1130: 5f 64 62 5f 63 6f 6e 66 69 67 20 64 62 20 52 45  _db_config db RE
1140: 53 45 54 5f 44 42 20 30 0a 20 20 73 71 6c 69 74  SET_DB 0.  sqlit
1150: 65 33 20 64 62 32 20 74 65 73 74 2e 64 62 0a 20  e3 db2 test.db. 
1160: 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20   catchsql {.    
1170: 20 50 52 41 47 4d 41 20 70 61 67 65 5f 63 6f 75   PRAGMA page_cou
1180: 6e 74 3b 0a 20 20 20 20 20 50 52 41 47 4d 41 20  nt;.     PRAGMA 
1190: 70 61 67 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20  page_size;.     
11a0: 50 52 41 47 4d 41 20 6a 6f 75 72 6e 61 6c 5f 6d  PRAGMA journal_m
11b0: 6f 64 65 3b 0a 20 20 20 20 20 50 52 41 47 4d 41  ode;.     PRAGMA
11c0: 20 71 75 69 63 6b 5f 63 68 65 63 6b 3b 0a 20 20   quick_check;.  
11d0: 7d 20 64 62 32 0a 7d 20 7b 30 20 7b 31 20 38 31  } db2.} {0 {1 81
11e0: 39 32 20 77 61 6c 20 6f 6b 7d 7d 0a 64 62 32 20  92 wal ok}}.db2 
11f0: 63 6c 6f 73 65 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d  close..#--------
1200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1240: 2d 0a 72 65 73 65 74 5f 64 62 0a 73 71 6c 69 74  -.reset_db.sqlit
1250: 65 33 20 64 62 32 20 74 65 73 74 2e 64 62 0a 64  e3 db2 test.db.d
1260: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 36  o_execsql_test 6
1270: 30 30 20 7b 0a 20 20 50 52 41 47 4d 41 20 6a 6f  00 {.  PRAGMA jo
1280: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 77 61 6c  urnal_mode = wal
1290: 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  ;.  CREATE TABLE
12a0: 20 74 31 28 61 29 3b 0a 20 20 49 4e 53 45 52 54   t1(a);.  INSERT
12b0: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
12c0: 31 29 2c 20 28 32 29 2c 20 28 33 29 2c 20 28 34  1), (2), (3), (4
12d0: 29 3b 0a 7d 20 7b 77 61 6c 7d 0a 0a 64 6f 5f 65  );.} {wal}..do_e
12e0: 78 65 63 73 71 6c 5f 74 65 73 74 20 2d 64 62 20  xecsql_test -db 
12f0: 64 62 32 20 36 31 30 20 7b 0a 20 20 53 45 4c 45  db2 610 {.  SELE
1300: 43 54 20 2a 20 46 52 4f 4d 20 74 31 0a 7d 20 7b  CT * FROM t1.} {
1310: 31 20 32 20 33 20 34 7d 0a 0a 64 6f 5f 74 65 73  1 2 3 4}..do_tes
1320: 74 20 36 32 30 20 7b 0a 20 20 73 65 74 20 72 65  t 620 {.  set re
1330: 73 20 5b 6c 69 73 74 5d 0a 20 20 64 62 32 20 65  s [list].  db2 e
1340: 76 61 6c 20 7b 53 45 4c 45 43 54 20 61 20 46 52  val {SELECT a FR
1350: 4f 4d 20 74 31 7d 20 7b 0a 20 20 20 20 6c 61 70  OM t1} {.    lap
1360: 70 65 6e 64 20 72 65 73 20 24 61 0a 20 20 20 20  pend res $a.    
1370: 69 66 20 7b 24 61 3d 3d 33 7d 20 7b 0a 20 20 20  if {$a==3} {.   
1380: 20 20 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f     sqlite3_db_co
1390: 6e 66 69 67 20 64 62 20 52 45 53 45 54 5f 44 42  nfig db RESET_DB
13a0: 20 31 0a 20 20 20 20 20 20 64 62 20 65 76 61 6c   1.      db eval
13b0: 20 56 41 43 55 55 4d 0a 20 20 20 20 20 20 73 71   VACUUM.      sq
13c0: 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 20  lite3_db_config 
13d0: 64 62 20 52 45 53 45 54 5f 44 42 20 30 0a 20 20  db RESET_DB 0.  
13e0: 20 20 7d 0a 20 20 7d 0a 0a 20 20 73 65 74 20 72    }.  }..  set r
13f0: 65 73 0a 7d 20 7b 31 20 32 20 33 20 34 7d 0a 0a  es.} {1 2 3 4}..
1400: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
1410: 2d 64 62 20 64 62 32 20 36 33 30 20 7b 0a 20 20  -db db2 630 {.  
1420: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 73 71  SELECT * FROM sq
1430: 6c 69 74 65 5f 6d 61 73 74 65 72 0a 7d 20 7b 7d  lite_master.} {}
1440: 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..#-------------
1450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 64 62 32  ------------.db2
1490: 20 63 6c 6f 73 65 0a 72 65 73 65 74 5f 64 62 0a   close.reset_db.
14a0: 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74  .do_execsql_test
14b0: 20 37 30 30 20 7b 0a 20 20 50 52 41 47 4d 41 20   700 {.  PRAGMA 
14c0: 70 61 67 65 5f 73 69 7a 65 3d 35 31 32 3b 0a 20  page_size=512;. 
14d0: 20 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63   PRAGMA auto_vac
14e0: 75 75 6d 20 3d 20 30 3b 0a 20 20 43 52 45 41 54  uum = 0;.  CREAT
14f0: 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c 63  E TABLE t1(a,b,c
1500: 29 3b 0a 20 20 43 52 45 41 54 45 20 49 4e 44 45  );.  CREATE INDE
1510: 58 20 74 31 61 20 4f 4e 20 74 31 28 61 29 3b 0a  X t1a ON t1(a);.
1520: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 74    CREATE INDEX t
1530: 31 62 63 20 4f 4e 20 74 31 28 62 2c 63 29 3b 0a  1bc ON t1(b,c);.
1540: 20 20 57 49 54 48 20 52 45 43 55 52 53 49 56 45    WITH RECURSIVE
1550: 20 63 28 78 29 20 41 53 20 28 56 41 4c 55 45 53   c(x) AS (VALUES
1560: 28 31 29 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45  (1) UNION ALL SE
1570: 4c 45 43 54 20 78 2b 31 20 46 52 4f 4d 20 63 20  LECT x+1 FROM c 
1580: 57 48 45 52 45 20 78 3c 31 30 29 0a 20 20 20 20  WHERE x<10).    
1590: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28 61  INSERT INTO t1(a
15a0: 2c 62 2c 63 29 20 53 45 4c 45 43 54 20 78 2c 20  ,b,c) SELECT x, 
15b0: 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 30 30 29 2c  randomblob(100),
15c0: 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 30 30 29 20  randomblob(100) 
15d0: 46 52 4f 4d 20 63 3b 0a 20 20 50 52 41 47 4d 41  FROM c;.  PRAGMA
15e0: 20 70 61 67 65 5f 63 6f 75 6e 74 3b 0a 20 20 50   page_count;.  P
15f0: 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74 79 5f  RAGMA integrity_
1600: 63 68 65 63 6b 3b 0a 7d 20 7b 31 39 20 6f 6b 7d  check;.} {19 ok}
1610: 0a 0a 69 66 20 7b 5b 6e 6f 6e 7a 65 72 6f 5f 72  ..if {[nonzero_r
1620: 65 73 65 72 76 65 64 5f 62 79 74 65 73 5d 7d 20  eserved_bytes]} 
1630: 7b 0a 20 20 66 69 6e 69 73 68 5f 74 65 73 74 0a  {.  finish_test.
1640: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 73 71 6c 69    return.}..sqli
1650: 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 20 64 62  te3_db_config db
1660: 20 44 45 46 45 4e 53 49 56 45 20 30 0a 64 6f 5f   DEFENSIVE 0.do_
1670: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 37 31 30  execsql_test 710
1680: 20 7b 0a 20 20 55 50 44 41 54 45 20 73 71 6c 69   {.  UPDATE sqli
1690: 74 65 5f 64 62 70 61 67 65 20 53 45 54 20 64 61  te_dbpage SET da
16a0: 74 61 3d 0a 20 20 20 20 58 27 35 33 35 31 34 43  ta=.    X'53514C
16b0: 36 39 37 34 36 35 32 30 36 36 36 46 37 32 36 44  69746520666F726D
16c0: 36 31 37 34 32 30 33 33 30 30 30 32 30 30 30 33  6174203300020003
16d0: 30 31 30 30 34 30 32 30 32 30 30 30 30 30 30 30  0100402020000000
16e0: 30 30 30 30 30 30 30 30 31 33 30 30 30 30 30 30  0000000013000000
16f0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1700: 30 33 30 30 30 30 30 30 30 34 30 30 30 30 30 30  0300000004000000
1710: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1720: 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0100000000000000
1730: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1740: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1750: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1760: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1770: 30 30 30 44 30 30 30 30 30 30 30 33 30 31 37 43  000D00000003017C
1780: 30 30 30 31 44 38 30 31 41 43 30 31 37 43 30 30  0001D801AC017C00
1790: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17a0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17b0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17c0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17d0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17e0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
17f0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1800: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1810: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1820: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1830: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1840: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1850: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1860: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1870: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1880: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1890: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18a0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18b0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18c0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18d0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18e0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
18f0: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1900: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1910: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1920: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1930: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1940: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1950: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1960: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1970: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1980: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
1990: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30  0000000000000000
19a0: 30 30 32 45 30 33 30 36 31 37 31 35 31 31 30 31  002E030617151101
19b0: 34 35 36 39 36 45 36 34 36 35 37 38 37 34 33 31  45696E6465787431
19c0: 36 32 36 33 37 34 33 31 30 34 34 33 35 32 34 35  6263743104435245
19d0: 34 31 35 34 34 35 32 30 34 39 34 45 34 34 34 35  41544520494E4445
19e0: 35 38 32 30 37 34 33 31 36 32 36 33 32 30 34 46  582074316263204F
19f0: 34 45 32 30 37 34 33 31 32 38 36 32 32 43 36 33  4E20743128622C63
1a00: 32 39 32 41 30 32 30 36 31 37 31 33 31 31 30 31  292A020617131101
1a10: 33 46 36 39 36 45 36 34 36 35 37 38 37 34 33 31  3F696E6465787431
1a20: 36 31 37 34 33 31 30 33 34 33 35 32 34 35 34 31  6174310343524541
1a30: 35 34 34 35 32 30 34 39 34 45 34 34 34 35 35 38  544520494E444558
1a40: 32 30 37 34 33 31 36 31 32 30 34 46 34 45 32 30  20743161204F4E20
1a50: 37 34 33 31 32 38 36 31 32 39 32 36 30 31 30 36  7431286129260106
1a60: 31 37 31 31 31 31 30 31 33 39 37 34 36 31 36 32  1711110139746162
1a70: 36 43 36 35 37 34 33 31 37 34 33 31 30 32 34 33  6C65743174310243
1a80: 35 32 34 35 34 31 35 34 34 35 32 30 35 34 34 31  5245415445205441
1a90: 34 32 34 43 34 35 32 30 37 34 33 31 32 38 36 31  424C452074312861
1aa0: 32 43 36 32 32 43 36 33 32 39 27 20 57 48 45 52  2C622C6329' WHER
1ab0: 45 20 70 67 6e 6f 3d 31 3b 0a 7d 0a 0a 64 6f 5f  E pgno=1;.}..do_
1ac0: 65 78 65 63 73 71 6c 5f 74 65 73 74 20 37 32 30  execsql_test 720
1ad0: 20 7b 0a 20 20 50 52 41 47 4d 41 20 69 6e 74 65   {.  PRAGMA inte
1ae0: 67 72 69 74 79 5f 63 68 65 63 6b 3b 0a 7d 20 7b  grity_check;.} {
1af0: 6f 6b 7d 0a 0a 64 6f 5f 74 65 73 74 20 37 33 30  ok}..do_test 730
1b00: 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 64 62 5f   {.  sqlite3_db_
1b10: 63 6f 6e 66 69 67 20 64 62 20 52 45 53 45 54 5f  config db RESET_
1b20: 44 42 20 31 0a 20 20 64 62 20 65 76 61 6c 20 56  DB 1.  db eval V
1b30: 41 43 55 55 4d 0a 20 20 73 71 6c 69 74 65 33 5f  ACUUM.  sqlite3_
1b40: 64 62 5f 63 6f 6e 66 69 67 20 64 62 20 52 45 53  db_config db RES
1b50: 45 54 5f 44 42 20 30 0a 7d 20 7b 30 7d 0a 0a 64  ET_DB 0.} {0}..d
1b60: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 37  o_execsql_test 7
1b70: 34 30 20 7b 0a 20 20 50 52 41 47 4d 41 20 70 61  40 {.  PRAGMA pa
1b80: 67 65 5f 63 6f 75 6e 74 3b 0a 20 20 50 52 41 47  ge_count;.  PRAG
1b90: 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  MA integrity_che
1ba0: 63 6b 3b 0a 7d 20 7b 31 20 6f 6b 7d 0a 0a 66 69  ck;.} {1 ok}..fi
1bb0: 6e 69 73 68 5f 74 65 73 74 0a                    nish_test.