/ Hex Artifact Content
Login

Artifact b65bad7120c52583b8f0054d99eff80718119a77:


0000: 23 20 32 30 31 30 20 4a 75 6c 79 20 30 39 0a 23  # 2010 July 09.#
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: 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20 6f 66    The.# focus of
01b0: 20 74 68 69 73 20 66 69 6c 65 20 69 73 20 74 65   this file is te
01c0: 73 74 69 6e 67 20 74 68 65 20 53 45 4c 45 43 54  sting the SELECT
01d0: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 23 0a 0a 73   statement..#..s
01e0: 65 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65  et testdir [file
01f0: 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d   dirname $argv0]
0200: 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72  .source $testdir
0210: 2f 74 65 73 74 65 72 2e 74 63 6c 0a 73 65 74 20  /tester.tcl.set 
0220: 74 65 73 74 70 72 65 66 69 78 20 73 74 61 74 0a  testprefix stat.
0230: 0a 69 66 63 61 70 61 62 6c 65 20 21 76 74 61 62  .ifcapable !vtab
0240: 7c 7c 21 63 6f 6d 70 6f 75 6e 64 20 7b 0a 20 20  ||!compound {.  
0250: 66 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65  finish_test.  re
0260: 74 75 72 6e 0a 7d 0a 0a 23 20 54 68 69 73 20 6d  turn.}..# This m
0270: 6f 64 75 6c 65 20 75 73 65 73 20 68 61 72 64 2d  odule uses hard-
0280: 63 6f 64 65 64 20 72 65 73 75 6c 74 73 20 74 68  coded results th
0290: 61 74 20 64 65 70 65 6e 64 20 6f 6e 20 65 78 61  at depend on exa
02a0: 63 74 20 6d 65 61 73 75 72 65 6d 65 6e 74 73 20  ct measurements 
02b0: 6f 66 0a 23 20 70 61 67 65 73 20 73 69 7a 65 73  of.# pages sizes
02c0: 20 61 74 20 74 68 65 20 62 79 74 65 20 6c 65 76   at the byte lev
02d0: 65 6c 2c 20 61 6e 64 20 68 65 6e 63 65 20 77 69  el, and hence wi
02e0: 6c 6c 20 6e 6f 74 20 77 6f 72 6b 20 69 66 20 74  ll not work if t
02f0: 68 65 20 72 65 73 65 72 76 65 64 5f 62 79 74 65  he reserved_byte
0300: 73 0a 23 20 76 61 6c 75 65 20 69 73 20 6e 6f 6e  s.# value is non
0310: 7a 65 72 6f 2e 0a 69 66 20 7b 5b 6e 6f 6e 7a 65  zero..if {[nonze
0320: 72 6f 5f 72 65 73 65 72 76 65 64 5f 62 79 74 65  ro_reserved_byte
0330: 73 5d 7d 20 7b 66 69 6e 69 73 68 5f 74 65 73 74  s]} {finish_test
0340: 3b 20 72 65 74 75 72 6e 3b 7d 0a 0a 73 65 74 20  ; return;}..set 
0350: 3a 3a 61 73 63 20 31 0a 70 72 6f 63 20 61 5f 73  ::asc 1.proc a_s
0360: 74 72 69 6e 67 20 7b 6e 7d 20 7b 20 73 74 72 69  tring {n} { stri
0370: 6e 67 20 72 61 6e 67 65 20 5b 73 74 72 69 6e 67  ng range [string
0380: 20 72 65 70 65 61 74 20 5b 69 6e 63 72 20 3a 3a   repeat [incr ::
0390: 61 73 63 5d 2e 20 24 6e 5d 20 31 20 24 6e 20 7d  asc]. $n] 1 $n }
03a0: 0a 64 62 20 66 75 6e 63 20 61 5f 73 74 72 69 6e  .db func a_strin
03b0: 67 20 61 5f 73 74 72 69 6e 67 0a 0a 72 65 67 69  g a_string..regi
03c0: 73 74 65 72 5f 64 62 73 74 61 74 5f 76 74 61 62  ster_dbstat_vtab
03d0: 20 64 62 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74   db.do_execsql_t
03e0: 65 73 74 20 73 74 61 74 2d 30 2e 30 20 7b 0a 20  est stat-0.0 {. 
03f0: 20 50 52 41 47 4d 41 20 61 75 74 6f 5f 76 61 63   PRAGMA auto_vac
0400: 75 75 6d 20 3d 20 4f 46 46 3b 0a 20 20 43 52 45  uum = OFF;.  CRE
0410: 41 54 45 20 56 49 52 54 55 41 4c 20 54 41 42 4c  ATE VIRTUAL TABL
0420: 45 20 74 65 6d 70 2e 73 74 61 74 20 55 53 49 4e  E temp.stat USIN
0430: 47 20 64 62 73 74 61 74 3b 0a 20 20 53 45 4c 45  G dbstat;.  SELE
0440: 43 54 20 2a 20 46 52 4f 4d 20 73 74 61 74 3b 0a  CT * FROM stat;.
0450: 7d 20 7b 7d 0a 0a 69 66 63 61 70 61 62 6c 65 20  } {}..ifcapable 
0460: 77 61 6c 20 7b 0a 20 20 64 6f 5f 65 78 65 63 73  wal {.  do_execs
0470: 71 6c 5f 74 65 73 74 20 73 74 61 74 2d 30 2e 31  ql_test stat-0.1
0480: 20 7b 0a 20 20 20 20 50 52 41 47 4d 41 20 6a 6f   {.    PRAGMA jo
0490: 75 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 57 41 4c  urnal_mode = WAL
04a0: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 6a 6f 75  ;.    PRAGMA jou
04b0: 72 6e 61 6c 5f 6d 6f 64 65 20 3d 20 64 65 6c 65  rnal_mode = dele
04c0: 74 65 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 6e  te;.    SELECT n
04d0: 61 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65 6e  ame, path, pagen
04e0: 6f 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63 65  o, pagetype, nce
04f0: 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e 75  ll, payload, unu
0500: 73 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64 0a  sed, mx_payload.
0510: 20 20 20 20 20 20 46 52 4f 4d 20 73 74 61 74 3b        FROM stat;
0520: 0a 20 20 7d 20 7b 77 61 6c 20 64 65 6c 65 74 65  .  } {wal delete
0530: 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 2f   sqlite_master /
0540: 20 31 20 6c 65 61 66 20 30 20 30 20 39 31 36 20   1 leaf 0 0 916 
0550: 30 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 74  0}.}..do_test st
0560: 61 74 2d 31 2e 30 20 7b 0a 20 20 65 78 65 63 73  at-1.0 {.  execs
0570: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
0580: 54 41 42 4c 45 20 74 31 28 61 2c 20 62 29 3b 0a  TABLE t1(a, b);.
0590: 20 20 20 20 43 52 45 41 54 45 20 49 4e 44 45 58      CREATE INDEX
05a0: 20 69 31 20 4f 4e 20 74 31 28 62 29 3b 0a 20 20   i1 ON t1(b);.  
05b0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
05c0: 28 72 6f 77 69 64 2c 20 61 2c 20 62 29 20 56 41  (rowid, a, b) VA
05d0: 4c 55 45 53 28 32 2c 20 32 2c 20 33 29 3b 0a 20  LUES(2, 2, 3);. 
05e0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
05f0: 31 28 72 6f 77 69 64 2c 20 61 2c 20 62 29 20 56  1(rowid, a, b) V
0600: 41 4c 55 45 53 28 33 2c 20 34 2c 20 35 29 3b 0a  ALUES(3, 4, 5);.
0610: 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74    }.} {}.do_test
0620: 20 73 74 61 74 2d 31 2e 31 20 7b 0a 20 20 65 78   stat-1.1 {.  ex
0630: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
0640: 43 54 20 6e 61 6d 65 2c 20 70 61 74 68 2c 20 70  CT name, path, p
0650: 61 67 65 6e 6f 2c 20 70 61 67 65 74 79 70 65 2c  ageno, pagetype,
0660: 20 6e 63 65 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c   ncell, payload,
0670: 20 75 6e 75 73 65 64 2c 20 6d 78 5f 70 61 79 6c   unused, mx_payl
0680: 6f 61 64 0a 20 20 20 20 20 20 46 52 4f 4d 20 73  oad.      FROM s
0690: 74 61 74 20 57 48 45 52 45 20 6e 61 6d 65 20 3d  tat WHERE name =
06a0: 20 27 74 31 27 3b 0a 20 20 7d 0a 7d 20 7b 74 31   't1';.  }.} {t1
06b0: 20 2f 20 32 20 6c 65 61 66 20 32 20 31 30 20 39   / 2 leaf 2 10 9
06c0: 39 38 20 35 7d 0a 64 6f 5f 74 65 73 74 20 73 74  98 5}.do_test st
06d0: 61 74 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63 73  at-1.2 {.  execs
06e0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
06f0: 6e 61 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65  name, path, page
0700: 6e 6f 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63  no, pagetype, nc
0710: 65 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e  ell, payload, un
0720: 75 73 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64  used, mx_payload
0730: 0a 20 20 20 20 20 20 46 52 4f 4d 20 73 74 61 74  .      FROM stat
0740: 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 69   WHERE name = 'i
0750: 31 27 3b 0a 20 20 7d 0a 7d 20 7b 69 31 20 2f 20  1';.  }.} {i1 / 
0760: 33 20 6c 65 61 66 20 32 20 31 30 20 31 30 30 30  3 leaf 2 10 1000
0770: 20 35 7d 0a 64 6f 5f 74 65 73 74 20 73 74 61 74   5}.do_test stat
0780: 2d 31 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.3 {.  execsql
0790: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 6e 61   {.    SELECT na
07a0: 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65 6e 6f  me, path, pageno
07b0: 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63 65 6c  , pagetype, ncel
07c0: 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e 75 73  l, payload, unus
07d0: 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64 0a 20  ed, mx_payload. 
07e0: 20 20 20 20 20 46 52 4f 4d 20 73 74 61 74 20 57       FROM stat W
07f0: 48 45 52 45 20 6e 61 6d 65 20 3d 20 27 73 71 6c  HERE name = 'sql
0800: 69 74 65 5f 6d 61 73 74 65 72 27 3b 0a 20 20 7d  ite_master';.  }
0810: 0a 7d 20 7b 73 71 6c 69 74 65 5f 6d 61 73 74 65  .} {sqlite_maste
0820: 72 20 2f 20 31 20 6c 65 61 66 20 32 20 37 37 20  r / 1 leaf 2 77 
0830: 38 33 31 20 34 30 7d 0a 64 6f 5f 74 65 73 74 20  831 40}.do_test 
0840: 73 74 61 74 2d 31 2e 34 20 7b 0a 20 20 65 78 65  stat-1.4 {.  exe
0850: 63 73 71 6c 20 7b 0a 20 20 20 20 44 52 4f 50 20  csql {.    DROP 
0860: 54 41 42 4c 45 20 74 31 3b 0a 20 20 7d 0a 7d 20  TABLE t1;.  }.} 
0870: 7b 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  {}..do_execsql_t
0880: 65 73 74 20 73 74 61 74 2d 32 2e 31 20 7b 0a 20  est stat-2.1 {. 
0890: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 33   CREATE TABLE t3
08a0: 28 61 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20  (a PRIMARY KEY, 
08b0: 62 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  b);.  INSERT INT
08c0: 4f 20 74 33 28 72 6f 77 69 64 2c 20 61 2c 20 62  O t3(rowid, a, b
08d0: 29 20 56 41 4c 55 45 53 28 32 2c 20 61 5f 73 74  ) VALUES(2, a_st
08e0: 72 69 6e 67 28 31 31 31 29 2c 20 61 5f 73 74 72  ring(111), a_str
08f0: 69 6e 67 28 32 32 32 29 29 3b 0a 20 20 49 4e 53  ing(222));.  INS
0900: 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45  ERT INTO t3 SELE
0910: 43 54 20 61 5f 73 74 72 69 6e 67 28 31 31 30 2b  CT a_string(110+
0920: 72 6f 77 69 64 29 2c 20 61 5f 73 74 72 69 6e 67  rowid), a_string
0930: 28 32 32 31 2b 72 6f 77 69 64 29 20 46 52 4f 4d  (221+rowid) FROM
0940: 20 74 33 0a 20 20 20 4f 52 44 45 52 20 42 59 20   t3.   ORDER BY 
0950: 72 6f 77 69 64 3b 0a 20 20 49 4e 53 45 52 54 20  rowid;.  INSERT 
0960: 49 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 61  INTO t3 SELECT a
0970: 5f 73 74 72 69 6e 67 28 31 31 30 2b 72 6f 77 69  _string(110+rowi
0980: 64 29 2c 20 61 5f 73 74 72 69 6e 67 28 32 32 31  d), a_string(221
0990: 2b 72 6f 77 69 64 29 20 46 52 4f 4d 20 74 33 0a  +rowid) FROM t3.
09a0: 20 20 20 4f 52 44 45 52 20 42 59 20 72 6f 77 69     ORDER BY rowi
09b0: 64 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  d;.  INSERT INTO
09c0: 20 74 33 20 53 45 4c 45 43 54 20 61 5f 73 74 72   t3 SELECT a_str
09d0: 69 6e 67 28 31 31 30 2b 72 6f 77 69 64 29 2c 20  ing(110+rowid), 
09e0: 61 5f 73 74 72 69 6e 67 28 32 32 31 2b 72 6f 77  a_string(221+row
09f0: 69 64 29 20 46 52 4f 4d 20 74 33 0a 20 20 20 4f  id) FROM t3.   O
0a00: 52 44 45 52 20 42 59 20 72 6f 77 69 64 3b 0a 20  RDER BY rowid;. 
0a10: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
0a20: 53 45 4c 45 43 54 20 61 5f 73 74 72 69 6e 67 28  SELECT a_string(
0a30: 31 31 30 2b 72 6f 77 69 64 29 2c 20 61 5f 73 74  110+rowid), a_st
0a40: 72 69 6e 67 28 32 32 31 2b 72 6f 77 69 64 29 20  ring(221+rowid) 
0a50: 46 52 4f 4d 20 74 33 0a 20 20 20 4f 52 44 45 52  FROM t3.   ORDER
0a60: 20 42 59 20 72 6f 77 69 64 3b 0a 20 20 49 4e 53   BY rowid;.  INS
0a70: 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45  ERT INTO t3 SELE
0a80: 43 54 20 61 5f 73 74 72 69 6e 67 28 31 31 30 2b  CT a_string(110+
0a90: 72 6f 77 69 64 29 2c 20 61 5f 73 74 72 69 6e 67  rowid), a_string
0aa0: 28 32 32 31 2b 72 6f 77 69 64 29 20 46 52 4f 4d  (221+rowid) FROM
0ab0: 20 74 33 0a 20 20 20 4f 52 44 45 52 20 42 59 20   t3.   ORDER BY 
0ac0: 72 6f 77 69 64 3b 0a 20 20 53 45 4c 45 43 54 20  rowid;.  SELECT 
0ad0: 6e 61 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65  name, path, page
0ae0: 6e 6f 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63  no, pagetype, nc
0af0: 65 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e  ell, payload, un
0b00: 75 73 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64  used, mx_payload
0b10: 0a 20 20 20 20 46 52 4f 4d 20 73 74 61 74 20 57  .    FROM stat W
0b20: 48 45 52 45 20 6e 61 6d 65 20 21 3d 20 27 73 71  HERE name != 'sq
0b30: 6c 69 74 65 5f 6d 61 73 74 65 72 27 3b 0a 7d 20  lite_master';.} 
0b40: 5b 6c 69 73 74 20 5c 0a 20 20 73 71 6c 69 74 65  [list \.  sqlite
0b50: 5f 61 75 74 6f 69 6e 64 65 78 5f 74 33 5f 31 20  _autoindex_t3_1 
0b60: 2f 20 33 20 69 6e 74 65 72 6e 61 6c 20 33 20 33  / 3 internal 3 3
0b70: 36 38 20 36 32 33 20 31 32 35 20 20 20 20 20 20  68 623 125      
0b80: 20 5c 0a 20 20 73 71 6c 69 74 65 5f 61 75 74 6f   \.  sqlite_auto
0b90: 69 6e 64 65 78 5f 74 33 5f 31 20 2f 30 30 30 2f  index_t3_1 /000/
0ba0: 20 38 20 6c 65 61 66 20 38 20 39 34 36 20 34 36   8 leaf 8 946 46
0bb0: 20 31 32 33 20 20 20 20 20 20 20 20 5c 0a 20 20   123        \.  
0bc0: 73 71 6c 69 74 65 5f 61 75 74 6f 69 6e 64 65 78  sqlite_autoindex
0bd0: 5f 74 33 5f 31 20 2f 30 30 31 2f 20 39 20 6c 65  _t3_1 /001/ 9 le
0be0: 61 66 20 38 20 39 38 38 20 32 20 31 33 31 20 20  af 8 988 2 131  
0bf0: 20 20 20 20 20 20 20 5c 0a 20 20 73 71 6c 69 74         \.  sqlit
0c00: 65 5f 61 75 74 6f 69 6e 64 65 78 5f 74 33 5f 31  e_autoindex_t3_1
0c10: 20 2f 30 30 32 2f 20 31 35 20 6c 65 61 66 20 37   /002/ 15 leaf 7
0c20: 20 38 35 37 20 31 33 37 20 31 33 32 20 20 20 20   857 137 132    
0c30: 20 20 5c 0a 20 20 73 71 6c 69 74 65 5f 61 75 74    \.  sqlite_aut
0c40: 6f 69 6e 64 65 78 5f 74 33 5f 31 20 2f 30 30 33  oindex_t3_1 /003
0c50: 2f 20 32 30 20 6c 65 61 66 20 36 20 37 33 39 20  / 20 leaf 6 739 
0c60: 32 35 37 20 31 32 39 20 20 20 20 20 20 5c 0a 20  257 129      \. 
0c70: 20 74 33 20 2f 20 32 20 69 6e 74 65 72 6e 61 6c   t3 / 2 internal
0c80: 20 31 35 20 30 20 39 30 37 20 30 20 20 20 20 20   15 0 907 0     
0c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ca0: 20 20 20 20 20 20 20 20 5c 0a 20 20 74 33 20 2f          \.  t3 /
0cb0: 30 30 30 2f 20 34 20 6c 65 61 66 20 32 20 36 37  000/ 4 leaf 2 67
0cc0: 38 20 33 32 38 20 33 34 30 20 20 20 20 20 20 20  8 328 340       
0cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ce0: 20 20 20 5c 0a 20 20 74 33 20 2f 30 30 31 2f 20     \.  t3 /001/ 
0cf0: 35 20 6c 65 61 66 20 32 20 36 38 32 20 33 32 34  5 leaf 2 682 324
0d00: 20 33 34 32 20 20 20 20 20 20 20 20 20 20 20 20   342            
0d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a                \.
0d20: 20 20 74 33 20 2f 30 30 32 2f 20 36 20 6c 65 61    t3 /002/ 6 lea
0d30: 66 20 32 20 36 38 32 20 33 32 34 20 33 34 32 20  f 2 682 324 342 
0d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d50: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 74 33 20           \.  t3 
0d60: 2f 30 30 33 2f 20 37 20 6c 65 61 66 20 32 20 36  /003/ 7 leaf 2 6
0d70: 39 30 20 33 31 36 20 33 34 36 20 20 20 20 20 20  90 316 346      
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 20 20 20 20 5c 0a 20 20 74 33 20 2f 30 30 34 2f      \.  t3 /004/
0da0: 20 31 30 20 6c 65 61 66 20 32 20 36 38 32 20 33   10 leaf 2 682 3
0db0: 32 34 20 33 34 32 20 20 20 20 20 20 20 20 20 20  24 342          
0dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c                 \
0dd0: 0a 20 20 74 33 20 2f 30 30 35 2f 20 31 31 20 6c  .  t3 /005/ 11 l
0de0: 65 61 66 20 32 20 36 39 30 20 33 31 36 20 33 34  eaf 2 690 316 34
0df0: 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  6               
0e00: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 74 33            \.  t3
0e10: 20 2f 30 30 36 2f 20 31 32 20 6c 65 61 66 20 32   /006/ 12 leaf 2
0e20: 20 36 39 38 20 33 30 38 20 33 35 30 20 20 20 20   698 308 350    
0e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e40: 20 20 20 20 20 5c 0a 20 20 74 33 20 2f 30 30 37       \.  t3 /007
0e50: 2f 20 31 33 20 6c 65 61 66 20 32 20 37 30 36 20  / 13 leaf 2 706 
0e60: 33 30 30 20 33 35 34 20 20 20 20 20 20 20 20 20  300 354         
0e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0e80: 5c 0a 20 20 74 33 20 2f 30 30 38 2f 20 31 34 20  \.  t3 /008/ 14 
0e90: 6c 65 61 66 20 32 20 36 38 32 20 33 32 34 20 33  leaf 2 682 324 3
0ea0: 34 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20  42              
0eb0: 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 74             \.  t
0ec0: 33 20 2f 30 30 39 2f 20 31 36 20 6c 65 61 66 20  3 /009/ 16 leaf 
0ed0: 32 20 36 39 30 20 33 31 36 20 33 34 36 20 20 20  2 690 316 346   
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ef0: 20 20 20 20 20 20 5c 0a 20 20 74 33 20 2f 30 30        \.  t3 /00
0f00: 61 2f 20 31 37 20 6c 65 61 66 20 32 20 36 39 38  a/ 17 leaf 2 698
0f10: 20 33 30 38 20 33 35 30 20 20 20 20 20 20 20 20   308 350        
0f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0f30: 20 5c 0a 20 20 74 33 20 2f 30 30 62 2f 20 31 38   \.  t3 /00b/ 18
0f40: 20 6c 65 61 66 20 32 20 37 30 36 20 33 30 30 20   leaf 2 706 300 
0f50: 33 35 34 20 20 20 20 20 20 20 20 20 20 20 20 20  354             
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20              \.  
0f70: 74 33 20 2f 30 30 63 2f 20 31 39 20 6c 65 61 66  t3 /00c/ 19 leaf
0f80: 20 32 20 37 31 34 20 32 39 32 20 33 35 38 20 20   2 714 292 358  
0f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fa0: 20 20 20 20 20 20 20 5c 0a 20 20 74 33 20 2f 30         \.  t3 /0
0fb0: 30 64 2f 20 32 31 20 6c 65 61 66 20 32 20 37 32  0d/ 21 leaf 2 72
0fc0: 32 20 32 38 34 20 33 36 32 20 20 20 20 20 20 20  2 284 362       
0fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fe0: 20 20 5c 0a 20 20 74 33 20 2f 30 30 65 2f 20 32    \.  t3 /00e/ 2
0ff0: 32 20 6c 65 61 66 20 32 20 37 33 30 20 32 37 36  2 leaf 2 730 276
1000: 20 33 36 36 20 20 20 20 20 20 20 20 20 20 20 20   366            
1010: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20               \. 
1020: 20 74 33 20 2f 30 30 66 2f 20 32 33 20 6c 65 61   t3 /00f/ 23 lea
1030: 66 20 32 20 37 33 38 20 32 36 38 20 33 37 30 20  f 2 738 268 370 
1040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1050: 20 20 20 20 20 20 20 20 5c 0a 5d 0a 0a 23 20 57          \.]..# W
1060: 69 74 68 20 65 76 65 72 79 20 69 6e 64 65 78 20  ith every index 
1070: 65 6e 74 72 79 20 6f 76 65 72 66 6c 6f 77 69 6e  entry overflowin
1080: 67 2c 20 6d 61 6b 65 20 73 75 72 65 20 6e 6f 20  g, make sure no 
1090: 70 61 67 65 73 20 61 72 65 20 6d 69 73 73 65 64  pages are missed
10a0: 20 0a 23 20 28 6f 74 68 65 72 20 74 68 61 6e 20   .# (other than 
10b0: 74 68 65 20 6c 6f 63 6b 69 6e 67 20 70 61 67 65  the locking page
10c0: 20 77 68 69 63 68 20 69 73 20 36 34 20 69 6e 20   which is 64 in 
10d0: 74 68 69 73 20 74 65 73 74 20 62 75 69 6c 64 2e  this test build.
10e0: 29 0a 23 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ).#.do_execsql_t
10f0: 65 73 74 20 73 74 61 74 2d 32 2e 32 20 7b 0a 20  est stat-2.2 {. 
1100: 20 55 50 44 41 54 45 20 74 33 20 53 45 54 20 61   UPDATE t3 SET a
1110: 3d 61 7c 7c 68 65 78 28 72 61 6e 64 6f 6d 62 6c  =a||hex(randombl
1120: 6f 62 28 37 30 30 29 29 3b 0a 20 20 56 41 43 55  ob(700));.  VACU
1130: 55 4d 3b 0a 20 20 53 45 4c 45 43 54 20 70 61 67  UM;.  SELECT pag
1140: 65 6e 6f 20 46 52 4f 4d 20 73 74 61 74 20 45 58  eno FROM stat EX
1150: 43 45 50 54 20 53 45 4c 45 43 54 20 70 61 67 65  CEPT SELECT page
1160: 6e 6f 2d 31 20 46 52 4f 4d 20 73 74 61 74 3b 0a  no-1 FROM stat;.
1170: 7d 20 7b 36 34 20 31 33 36 7d 0a 0a 64 6f 5f 65  } {64 136}..do_e
1180: 78 65 63 73 71 6c 5f 74 65 73 74 20 73 74 61 74  xecsql_test stat
1190: 2d 32 2e 33 20 7b 20 44 52 4f 50 20 54 41 42 4c  -2.3 { DROP TABL
11a0: 45 20 74 33 3b 20 56 41 43 55 55 4d 3b 20 7d 20  E t3; VACUUM; } 
11b0: 7b 7d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  {}..do_execsql_t
11c0: 65 73 74 20 73 74 61 74 2d 33 2e 31 20 7b 0a 20  est stat-3.1 {. 
11d0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 34   CREATE TABLE t4
11e0: 28 78 29 3b 0a 20 20 43 52 45 41 54 45 20 49 4e  (x);.  CREATE IN
11f0: 44 45 58 20 69 34 20 4f 4e 20 74 34 28 78 29 3b  DEX i4 ON t4(x);
1200: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
1210: 34 28 72 6f 77 69 64 2c 20 78 29 20 56 41 4c 55  4(rowid, x) VALU
1220: 45 53 28 32 2c 20 61 5f 73 74 72 69 6e 67 28 37  ES(2, a_string(7
1230: 37 37 37 29 29 3b 0a 20 20 53 45 4c 45 43 54 20  777));.  SELECT 
1240: 6e 61 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65  name, path, page
1250: 6e 6f 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63  no, pagetype, nc
1260: 65 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e  ell, payload, un
1270: 75 73 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64  used, mx_payload
1280: 0a 20 20 20 20 46 52 4f 4d 20 73 74 61 74 20 57  .    FROM stat W
1290: 48 45 52 45 20 6e 61 6d 65 20 21 3d 20 27 73 71  HERE name != 'sq
12a0: 6c 69 74 65 5f 6d 61 73 74 65 72 27 3b 0a 7d 20  lite_master';.} 
12b0: 5b 6c 69 73 74 20 5c 0a 20 20 69 34 20 2f 20 33  [list \.  i4 / 3
12c0: 20 6c 65 61 66 20 31 20 31 30 33 20 39 30 35 20   leaf 1 103 905 
12d0: 37 37 38 32 20 20 20 20 20 20 20 20 20 20 20 20  7782            
12e0: 20 20 20 20 20 5c 0a 20 20 69 34 20 2f 30 30 30       \.  i4 /000
12f0: 2b 30 30 30 30 30 30 20 34 20 6f 76 65 72 66 6c  +000000 4 overfl
1300: 6f 77 20 30 20 31 30 32 30 20 30 20 30 20 20 20  ow 0 1020 0 0   
1310: 20 20 20 20 5c 0a 20 20 69 34 20 2f 30 30 30 2b      \.  i4 /000+
1320: 30 30 30 30 30 31 20 35 20 6f 76 65 72 66 6c 6f  000001 5 overflo
1330: 77 20 30 20 31 30 32 30 20 30 20 30 20 20 20 20  w 0 1020 0 0    
1340: 20 20 5c 0a 20 20 69 34 20 2f 30 30 30 2b 30 30    \.  i4 /000+00
1350: 30 30 30 32 20 36 20 6f 76 65 72 66 6c 6f 77 20  0002 6 overflow 
1360: 30 20 31 30 32 30 20 30 20 30 20 20 20 20 20 20  0 1020 0 0      
1370: 5c 0a 20 20 69 34 20 2f 30 30 30 2b 30 30 30 30  \.  i4 /000+0000
1380: 30 33 20 37 20 6f 76 65 72 66 6c 6f 77 20 30 20  03 7 overflow 0 
1390: 31 30 32 30 20 30 20 30 20 20 20 20 20 20 5c 0a  1020 0 0      \.
13a0: 20 20 69 34 20 2f 30 30 30 2b 30 30 30 30 30 34    i4 /000+000004
13b0: 20 38 20 6f 76 65 72 66 6c 6f 77 20 30 20 31 30   8 overflow 0 10
13c0: 32 30 20 30 20 30 20 20 20 20 20 20 5c 0a 20 20  20 0 0      \.  
13d0: 69 34 20 2f 30 30 30 2b 30 30 30 30 30 35 20 39  i4 /000+000005 9
13e0: 20 6f 76 65 72 66 6c 6f 77 20 30 20 31 30 32 30   overflow 0 1020
13f0: 20 30 20 30 20 20 20 20 20 20 5c 0a 20 20 69 34   0 0      \.  i4
1400: 20 2f 30 30 30 2b 30 30 30 30 30 36 20 31 30 20   /000+000006 10 
1410: 6f 76 65 72 66 6c 6f 77 20 30 20 31 30 32 30 20  overflow 0 1020 
1420: 30 20 30 20 20 20 20 20 20 5c 0a 20 20 69 34 20  0 0      \.  i4 
1430: 2f 30 30 30 2b 30 30 30 30 30 37 20 31 31 20 6f  /000+000007 11 o
1440: 76 65 72 66 6c 6f 77 20 30 20 35 33 39 20 34 38  verflow 0 539 48
1450: 31 20 30 20 20 20 20 20 5c 0a 20 20 74 34 20 2f  1 0     \.  t4 /
1460: 20 32 20 6c 65 61 66 20 31 20 36 34 30 20 33 36   2 leaf 1 640 36
1470: 37 20 37 37 38 30 20 20 20 20 20 20 20 20 20 20  7 7780          
1480: 20 20 20 20 20 20 20 5c 0a 20 20 74 34 20 2f 30         \.  t4 /0
1490: 30 30 2b 30 30 30 30 30 30 20 31 32 20 6f 76 65  00+000000 12 ove
14a0: 72 66 6c 6f 77 20 30 20 31 30 32 30 20 30 20 30  rflow 0 1020 0 0
14b0: 20 20 20 20 20 20 5c 0a 20 20 74 34 20 2f 30 30        \.  t4 /00
14c0: 30 2b 30 30 30 30 30 31 20 31 33 20 6f 76 65 72  0+000001 13 over
14d0: 66 6c 6f 77 20 30 20 31 30 32 30 20 30 20 30 20  flow 0 1020 0 0 
14e0: 20 20 20 20 20 5c 0a 20 20 74 34 20 2f 30 30 30       \.  t4 /000
14f0: 2b 30 30 30 30 30 32 20 31 34 20 6f 76 65 72 66  +000002 14 overf
1500: 6c 6f 77 20 30 20 31 30 32 30 20 30 20 30 20 20  low 0 1020 0 0  
1510: 20 20 20 20 5c 0a 20 20 74 34 20 2f 30 30 30 2b      \.  t4 /000+
1520: 30 30 30 30 30 33 20 31 35 20 6f 76 65 72 66 6c  000003 15 overfl
1530: 6f 77 20 30 20 31 30 32 30 20 30 20 30 20 20 20  ow 0 1020 0 0   
1540: 20 20 20 5c 0a 20 20 74 34 20 2f 30 30 30 2b 30     \.  t4 /000+0
1550: 30 30 30 30 34 20 31 36 20 6f 76 65 72 66 6c 6f  00004 16 overflo
1560: 77 20 30 20 31 30 32 30 20 30 20 30 20 20 20 20  w 0 1020 0 0    
1570: 20 20 5c 0a 20 20 74 34 20 2f 30 30 30 2b 30 30    \.  t4 /000+00
1580: 30 30 30 35 20 31 37 20 6f 76 65 72 66 6c 6f 77  0005 17 overflow
1590: 20 30 20 31 30 32 30 20 30 20 30 20 20 20 20 20   0 1020 0 0     
15a0: 20 5c 0a 20 20 74 34 20 2f 30 30 30 2b 30 30 30   \.  t4 /000+000
15b0: 30 30 36 20 31 38 20 6f 76 65 72 66 6c 6f 77 20  006 18 overflow 
15c0: 30 20 31 30 32 30 20 30 20 30 20 20 20 20 20 20  0 1020 0 0      
15d0: 5c 0a 5d 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  \.]..do_execsql_
15e0: 74 65 73 74 20 73 74 61 74 2d 34 2e 31 20 7b 0a  test stat-4.1 {.
15f0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
1600: 35 28 78 29 3b 0a 20 20 43 52 45 41 54 45 20 49  5(x);.  CREATE I
1610: 4e 44 45 58 20 69 35 20 4f 4e 20 74 35 28 78 29  NDEX i5 ON t5(x)
1620: 3b 0a 20 20 53 45 4c 45 43 54 20 6e 61 6d 65 2c  ;.  SELECT name,
1630: 20 70 61 74 68 2c 20 70 61 67 65 6e 6f 2c 20 70   path, pageno, p
1640: 61 67 65 74 79 70 65 2c 20 6e 63 65 6c 6c 2c 20  agetype, ncell, 
1650: 70 61 79 6c 6f 61 64 2c 20 75 6e 75 73 65 64 2c  payload, unused,
1660: 20 6d 78 5f 70 61 79 6c 6f 61 64 0a 20 20 20 20   mx_payload.    
1670: 46 52 4f 4d 20 73 74 61 74 20 57 48 45 52 45 20  FROM stat WHERE 
1680: 6e 61 6d 65 20 3d 20 27 74 35 27 20 4f 52 20 6e  name = 't5' OR n
1690: 61 6d 65 20 3d 20 27 69 35 27 3b 0a 7d 20 5b 6c  ame = 'i5';.} [l
16a0: 69 73 74 20 20 5c 0a 20 20 69 35 20 2f 20 32 30  ist  \.  i5 / 20
16b0: 20 6c 65 61 66 20 30 20 30 20 31 30 31 36 20 30   leaf 0 0 1016 0
16c0: 20 5c 0a 20 20 74 35 20 2f 20 31 39 20 6c 65 61   \.  t5 / 19 lea
16d0: 66 20 30 20 30 20 31 30 31 36 20 30 20 5c 0a 5d  f 0 0 1016 0 \.]
16e0: 0a 0a 64 62 20 63 6c 6f 73 65 0a 66 6f 72 63 65  ..db close.force
16f0: 64 65 6c 65 74 65 20 74 65 73 74 2e 64 62 0a 73  delete test.db.s
1700: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
1710: 62 0a 72 65 67 69 73 74 65 72 5f 64 62 73 74 61  b.register_dbsta
1720: 74 5f 76 74 61 62 20 64 62 0a 64 6f 5f 65 78 65  t_vtab db.do_exe
1730: 63 73 71 6c 5f 74 65 73 74 20 73 74 61 74 2d 35  csql_test stat-5
1740: 2e 31 20 7b 0a 20 20 50 52 41 47 4d 41 20 61 75  .1 {.  PRAGMA au
1750: 74 6f 5f 76 61 63 75 75 6d 20 3d 20 4f 46 46 3b  to_vacuum = OFF;
1760: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
1770: 74 78 28 79 29 3b 0a 20 20 41 54 54 41 43 48 20  tx(y);.  ATTACH 
1780: 27 3a 6d 65 6d 6f 72 79 3a 27 20 41 53 20 61 75  ':memory:' AS au
1790: 78 31 3b 0a 20 20 43 52 45 41 54 45 20 56 49 52  x1;.  CREATE VIR
17a0: 54 55 41 4c 20 54 41 42 4c 45 20 74 65 6d 70 2e  TUAL TABLE temp.
17b0: 73 74 61 74 20 55 53 49 4e 47 20 64 62 73 74 61  stat USING dbsta
17c0: 74 28 61 75 78 31 29 3b 0a 20 20 43 52 45 41 54  t(aux1);.  CREAT
17d0: 45 20 54 41 42 4c 45 20 61 75 78 31 2e 74 31 28  E TABLE aux1.t1(
17e0: 78 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  x);.  INSERT INT
17f0: 4f 20 74 31 20 56 41 4c 55 45 53 28 7a 65 72 6f  O t1 VALUES(zero
1800: 62 6c 6f 62 28 31 35 31 33 29 29 3b 0a 20 20 49  blob(1513));.  I
1810: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
1820: 4c 55 45 53 28 7a 65 72 6f 62 6c 6f 62 28 31 35  LUES(zeroblob(15
1830: 31 34 29 29 3b 0a 20 20 53 45 4c 45 43 54 20 6e  14));.  SELECT n
1840: 61 6d 65 2c 20 70 61 74 68 2c 20 70 61 67 65 6e  ame, path, pagen
1850: 6f 2c 20 70 61 67 65 74 79 70 65 2c 20 6e 63 65  o, pagetype, nce
1860: 6c 6c 2c 20 70 61 79 6c 6f 61 64 2c 20 75 6e 75  ll, payload, unu
1870: 73 65 64 2c 20 6d 78 5f 70 61 79 6c 6f 61 64 0a  sed, mx_payload.
1880: 20 20 20 20 46 52 4f 4d 20 73 74 61 74 20 57 48      FROM stat WH
1890: 45 52 45 20 6e 61 6d 65 20 3d 20 27 74 31 27 3b  ERE name = 't1';
18a0: 0a 7d 20 5b 6c 69 73 74 20 5c 0a 20 20 74 31 20  .} [list \.  t1 
18b0: 2f 20 32 20 6c 65 61 66 20 32 20 39 39 33 20 35  / 2 leaf 2 993 5
18c0: 20 31 35 31 37 20 20 20 20 20 20 20 20 20 20 20   1517           
18d0: 20 20 20 20 20 5c 0a 20 20 74 31 20 2f 30 30 30       \.  t1 /000
18e0: 2b 30 30 30 30 30 30 20 33 20 6f 76 65 72 66 6c  +000000 3 overfl
18f0: 6f 77 20 30 20 31 30 32 30 20 30 20 30 20 20 20  ow 0 1020 0 0   
1900: 20 5c 0a 20 20 74 31 20 2f 30 30 31 2b 30 30 30   \.  t1 /001+000
1910: 30 30 30 20 34 20 6f 76 65 72 66 6c 6f 77 20 30  000 4 overflow 0
1920: 20 31 30 32 30 20 30 20 30 20 20 20 20 5c 0a 5d   1020 0 0    \.]
1930: 0a 0a 64 6f 5f 63 61 74 63 68 73 71 6c 5f 74 65  ..do_catchsql_te
1940: 73 74 20 73 74 61 74 2d 36 2e 31 20 7b 0a 20 20  st stat-6.1 {.  
1950: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
1960: 41 42 4c 45 20 74 65 6d 70 2e 73 32 20 55 53 49  ABLE temp.s2 USI
1970: 4e 47 20 64 62 73 74 61 74 28 6d 61 69 6e 78 29  NG dbstat(mainx)
1980: 3b 0a 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20  ;.} {1 {no such 
1990: 64 61 74 61 62 61 73 65 3a 20 6d 61 69 6e 78 7d  database: mainx}
19a0: 7d 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  }..#------------
19b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
19e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20  -------------.# 
19f0: 54 65 73 74 20 74 68 61 74 20 74 68 65 20 61 72  Test that the ar
1a00: 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f  gument passed to
1a10: 20 74 68 65 20 64 62 73 74 61 74 20 63 6f 6e 73   the dbstat cons
1a20: 74 72 75 63 74 6f 72 20 69 73 20 64 65 71 75 6f  tructor is dequo
1a30: 74 65 64 0a 23 20 62 65 66 6f 72 65 20 69 74 20  ted.# before it 
1a40: 69 73 20 6d 61 74 63 68 65 64 20 61 67 61 69 6e  is matched again
1a50: 73 74 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20  st the names of 
1a60: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
1a70: 65 73 2e 0a 23 0a 66 6f 72 63 65 64 65 6c 65 74  es..#.forcedelet
1a80: 65 20 74 65 73 74 2e 64 62 32 0a 64 6f 5f 65 78  e test.db2.do_ex
1a90: 65 63 73 71 6c 5f 74 65 73 74 20 37 2e 31 20 7b  ecsql_test 7.1 {
1aa0: 0a 20 20 41 54 54 41 43 48 20 27 74 65 73 74 2e  .  ATTACH 'test.
1ab0: 64 62 32 27 20 41 53 20 27 31 32 33 27 3b 0a 20  db2' AS '123';. 
1ac0: 20 50 52 41 47 4d 41 20 22 31 32 33 22 2e 61 75   PRAGMA "123".au
1ad0: 74 6f 5f 76 61 63 75 75 6d 20 3d 20 4f 46 46 3b  to_vacuum = OFF;
1ae0: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
1af0: 22 31 32 33 22 2e 78 31 28 61 2c 20 62 29 3b 0a  "123".x1(a, b);.
1b00: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 31    INSERT INTO x1
1b10: 20 56 41 4c 55 45 53 28 31 2c 20 32 29 3b 0a 7d   VALUES(1, 2);.}
1b20: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
1b30: 74 20 37 2e 31 2e 31 20 7b 0a 20 20 53 45 4c 45  t 7.1.1 {.  SELE
1b40: 43 54 20 2a 20 46 52 4f 4d 20 64 62 73 74 61 74  CT * FROM dbstat
1b50: 28 27 31 32 33 27 29 3b 0a 7d 20 7b 0a 20 20 73  ('123');.} {.  s
1b60: 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 2f 20 31  qlite_master / 1
1b70: 20 6c 65 61 66 20 31 20 33 37 20 38 37 35 20 33   leaf 1 37 875 3
1b80: 37 20 30 20 31 30 32 34 20 0a 20 20 78 31 20 2f  7 0 1024 .  x1 /
1b90: 20 32 20 6c 65 61 66 20 31 20 34 20 31 30 30 38   2 leaf 1 4 1008
1ba0: 20 34 20 31 30 32 34 20 31 30 32 34 0a 7d 0a 64   4 1024 1024.}.d
1bb0: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 37  o_execsql_test 7
1bc0: 2e 31 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20  .1.2 {.  SELECT 
1bd0: 2a 20 46 52 4f 4d 20 64 62 73 74 61 74 28 31 32  * FROM dbstat(12
1be0: 33 29 3b 0a 7d 20 7b 0a 20 20 73 71 6c 69 74 65  3);.} {.  sqlite
1bf0: 5f 6d 61 73 74 65 72 20 2f 20 31 20 6c 65 61 66  _master / 1 leaf
1c00: 20 31 20 33 37 20 38 37 35 20 33 37 20 30 20 31   1 37 875 37 0 1
1c10: 30 32 34 20 0a 20 20 78 31 20 2f 20 32 20 6c 65  024 .  x1 / 2 le
1c20: 61 66 20 31 20 34 20 31 30 30 38 20 34 20 31 30  af 1 4 1008 4 10
1c30: 32 34 20 31 30 32 34 0a 7d 0a 64 6f 5f 65 78 65  24 1024.}.do_exe
1c40: 63 73 71 6c 5f 74 65 73 74 20 37 2e 31 2e 33 20  csql_test 7.1.3 
1c50: 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54 55  {.  CREATE VIRTU
1c60: 41 4c 20 54 41 42 4c 45 20 78 32 20 55 53 49 4e  AL TABLE x2 USIN
1c70: 47 20 64 62 73 74 61 74 28 27 31 32 33 27 29 3b  G dbstat('123');
1c80: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
1c90: 20 78 32 3b 0a 7d 20 7b 0a 20 20 73 71 6c 69 74   x2;.} {.  sqlit
1ca0: 65 5f 6d 61 73 74 65 72 20 2f 20 31 20 6c 65 61  e_master / 1 lea
1cb0: 66 20 31 20 33 37 20 38 37 35 20 33 37 20 30 20  f 1 37 875 37 0 
1cc0: 31 30 32 34 20 0a 20 20 78 31 20 2f 20 32 20 6c  1024 .  x1 / 2 l
1cd0: 65 61 66 20 31 20 34 20 31 30 30 38 20 34 20 31  eaf 1 4 1008 4 1
1ce0: 30 32 34 20 31 30 32 34 0a 7d 0a 64 6f 5f 65 78  024 1024.}.do_ex
1cf0: 65 63 73 71 6c 5f 74 65 73 74 20 37 2e 31 2e 34  ecsql_test 7.1.4
1d00: 20 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52 54   {.  CREATE VIRT
1d10: 55 41 4c 20 54 41 42 4c 45 20 78 33 20 55 53 49  UAL TABLE x3 USI
1d20: 4e 47 20 64 62 73 74 61 74 28 31 32 33 29 3b 0a  NG dbstat(123);.
1d30: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
1d40: 78 33 3b 0a 7d 20 7b 0a 20 20 73 71 6c 69 74 65  x3;.} {.  sqlite
1d50: 5f 6d 61 73 74 65 72 20 2f 20 31 20 6c 65 61 66  _master / 1 leaf
1d60: 20 31 20 33 37 20 38 37 35 20 33 37 20 30 20 31   1 37 875 37 0 1
1d70: 30 32 34 20 0a 20 20 78 31 20 2f 20 32 20 6c 65  024 .  x1 / 2 le
1d80: 61 66 20 31 20 34 20 31 30 30 38 20 34 20 31 30  af 1 4 1008 4 10
1d90: 32 34 20 31 30 32 34 0a 7d 0a 0a 64 6f 5f 65 78  24 1024.}..do_ex
1da0: 65 63 73 71 6c 5f 74 65 73 74 20 37 2e 32 20 7b  ecsql_test 7.2 {
1db0: 0a 20 20 44 45 54 41 43 48 20 31 32 33 3b 0a 20  .  DETACH 123;. 
1dc0: 20 44 52 4f 50 20 54 41 42 4c 45 20 78 32 3b 0a   DROP TABLE x2;.
1dd0: 20 20 44 52 4f 50 20 54 41 42 4c 45 20 78 33 3b    DROP TABLE x3;
1de0: 0a 20 20 41 54 54 41 43 48 20 27 74 65 73 74 2e  .  ATTACH 'test.
1df0: 64 62 32 27 20 41 53 20 27 31 32 33 63 6f 72 70  db2' AS '123corp
1e00: 27 3b 0a 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  ';.}.do_execsql_
1e10: 74 65 73 74 20 37 2e 32 2e 31 20 7b 0a 20 20 53  test 7.2.1 {.  S
1e20: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64 62 73  ELECT * FROM dbs
1e30: 74 61 74 28 27 31 32 33 63 6f 72 70 27 29 3b 0a  tat('123corp');.
1e40: 7d 20 7b 0a 20 20 73 71 6c 69 74 65 5f 6d 61 73  } {.  sqlite_mas
1e50: 74 65 72 20 2f 20 31 20 6c 65 61 66 20 31 20 33  ter / 1 leaf 1 3
1e60: 37 20 38 37 35 20 33 37 20 30 20 31 30 32 34 20  7 875 37 0 1024 
1e70: 0a 20 20 78 31 20 2f 20 32 20 6c 65 61 66 20 31  .  x1 / 2 leaf 1
1e80: 20 34 20 31 30 30 38 20 34 20 31 30 32 34 20 31   4 1008 4 1024 1
1e90: 30 32 34 0a 7d 0a 64 6f 5f 63 61 74 63 68 73 71  024.}.do_catchsq
1ea0: 6c 5f 74 65 73 74 20 37 2e 32 2e 32 20 7b 0a 20  l_test 7.2.2 {. 
1eb0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 64   SELECT * FROM d
1ec0: 62 73 74 61 74 28 31 32 33 63 6f 72 70 29 3b 0a  bstat(123corp);.
1ed0: 7d 20 7b 31 20 7b 75 6e 72 65 63 6f 67 6e 69 7a  } {1 {unrecogniz
1ee0: 65 64 20 74 6f 6b 65 6e 3a 20 22 31 32 33 63 6f  ed token: "123co
1ef0: 72 70 22 7d 7d 0a 64 6f 5f 65 78 65 63 73 71 6c  rp"}}.do_execsql
1f00: 5f 74 65 73 74 20 37 2e 32 2e 33 20 7b 0a 20 20  _test 7.2.3 {.  
1f10: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
1f20: 41 42 4c 45 20 78 32 20 55 53 49 4e 47 20 64 62  ABLE x2 USING db
1f30: 73 74 61 74 28 27 31 32 33 63 6f 72 70 27 29 3b  stat('123corp');
1f40: 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  .  SELECT * FROM
1f50: 20 78 32 3b 0a 7d 20 7b 0a 20 20 73 71 6c 69 74   x2;.} {.  sqlit
1f60: 65 5f 6d 61 73 74 65 72 20 2f 20 31 20 6c 65 61  e_master / 1 lea
1f70: 66 20 31 20 33 37 20 38 37 35 20 33 37 20 30 20  f 1 37 875 37 0 
1f80: 31 30 32 34 20 0a 20 20 78 31 20 2f 20 32 20 6c  1024 .  x1 / 2 l
1f90: 65 61 66 20 31 20 34 20 31 30 30 38 20 34 20 31  eaf 1 4 1008 4 1
1fa0: 30 32 34 20 31 30 32 34 0a 7d 0a 64 6f 5f 63 61  024 1024.}.do_ca
1fb0: 74 63 68 73 71 6c 5f 74 65 73 74 20 37 2e 32 2e  tchsql_test 7.2.
1fc0: 34 20 7b 0a 20 20 43 52 45 41 54 45 20 56 49 52  4 {.  CREATE VIR
1fd0: 54 55 41 4c 20 54 41 42 4c 45 20 78 33 20 55 53  TUAL TABLE x3 US
1fe0: 49 4e 47 20 64 62 73 74 61 74 28 31 32 33 63 6f  ING dbstat(123co
1ff0: 72 70 29 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20  rp);.  SELECT * 
2000: 46 52 4f 4d 20 78 33 3b 0a 7d 20 7b 31 20 7b 75  FROM x3;.} {1 {u
2010: 6e 72 65 63 6f 67 6e 69 7a 65 64 20 74 6f 6b 65  nrecognized toke
2020: 6e 3a 20 22 31 32 33 63 6f 72 70 22 7d 7d 0a 0a  n: "123corp"}}..
2030: 66 69 6e 69 73 68 5f 74 65 73 74 0a              finish_test.