/ Hex Artifact Content
Login

Artifact bf326f546a666617367a7033fa2c07451bd4f8e1:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 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 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 73 63 72 69 70  us of this scrip
01c0: 74 20 69 73 20 62 74 72 65 65 20 64 61 74 61 62  t is btree datab
01d0: 61 73 65 20 62 61 63 6b 65 6e 64 0a 23 0a 23 20  ase backend.#.# 
01e0: 24 49 64 3a 20 62 74 72 65 65 2e 74 65 73 74 2c  $Id: btree.test,
01f0: 76 20 31 2e 31 32 20 32 30 30 32 2f 30 32 2f 31  v 1.12 2002/02/1
0200: 39 20 31 33 3a 33 39 3a 32 33 20 64 72 68 20 45  9 13:39:23 drh E
0210: 78 70 20 24 0a 0a 0a 73 65 74 20 74 65 73 74 64  xp $...set testd
0220: 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65  ir [file dirname
0230: 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20   $argv0].source 
0240: 24 74 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e  $testdir/tester.
0250: 74 63 6c 0a 0a 69 66 20 7b 5b 69 6e 66 6f 20 63  tcl..if {[info c
0260: 6f 6d 6d 61 6e 64 73 20 62 74 72 65 65 5f 6f 70  ommands btree_op
0270: 65 6e 5d 21 3d 22 22 7d 20 7b 0a 0a 23 20 42 61  en]!=""} {..# Ba
0280: 73 69 63 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74  sic functionalit
0290: 79 2e 20 20 4f 70 65 6e 20 61 6e 64 20 63 6c 6f  y.  Open and clo
02a0: 73 65 20 61 20 64 61 74 61 62 61 73 65 2e 0a 23  se a database..#
02b0: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31  .do_test btree-1
02c0: 2e 31 20 7b 0a 20 20 66 69 6c 65 20 64 65 6c 65  .1 {.  file dele
02d0: 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74 31 2e  te -force test1.
02e0: 62 74 0a 20 20 66 69 6c 65 20 64 65 6c 65 74 65  bt.  file delete
02f0: 20 2d 66 6f 72 63 65 20 74 65 73 74 31 2e 62 74   -force test1.bt
0300: 2d 6a 6f 75 72 6e 61 6c 0a 20 20 73 65 74 20 72  -journal.  set r
0310: 63 20 5b 63 61 74 63 68 20 7b 62 74 72 65 65 5f  c [catch {btree_
0320: 6f 70 65 6e 20 74 65 73 74 31 2e 62 74 7d 20 3a  open test1.bt} :
0330: 3a 62 31 5d 0a 7d 20 7b 30 7d 0a 0a 23 20 54 68  :b1].} {0}..# Th
0340: 65 20 73 65 63 6f 6e 64 20 65 6c 65 6d 65 6e 74  e second element
0350: 20 6f 66 20 74 68 65 20 6c 69 73 74 20 72 65 74   of the list ret
0360: 75 72 6e 65 64 20 62 79 20 62 74 72 65 65 5f 70  urned by btree_p
0370: 61 67 65 72 5f 73 74 61 74 73 20 69 73 20 74 68  ager_stats is th
0380: 65 0a 23 20 6e 75 6d 62 65 72 20 6f 66 20 70 61  e.# number of pa
0390: 67 65 73 20 63 75 72 72 65 6e 74 6c 79 20 63 68  ges currently ch
03a0: 65 63 6b 65 64 20 6f 75 74 2e 20 20 57 65 27 6c  ecked out.  We'l
03b0: 6c 20 62 65 20 63 68 65 63 6b 69 6e 67 20 74 68  l be checking th
03c0: 69 73 20 76 61 6c 75 65 0a 23 20 66 72 65 71 75  is value.# frequ
03d0: 65 6e 74 6c 79 20 64 75 72 69 6e 67 20 74 68 69  ently during thi
03e0: 73 20 74 65 73 74 20 73 63 72 69 70 74 2c 20 74  s test script, t
03f0: 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20  o make sure the 
0400: 62 74 72 65 65 20 6c 69 62 72 61 72 79 0a 23 20  btree library.# 
0410: 69 73 20 70 72 6f 70 65 72 6c 79 20 72 65 6c 65  is properly rele
0420: 61 73 69 6e 67 20 74 68 65 20 70 61 67 65 73 20  asing the pages 
0430: 69 74 20 63 68 65 63 6b 73 20 6f 75 74 2c 20 61  it checks out, a
0440: 6e 64 20 74 68 75 73 20 61 76 6f 69 64 69 6e 67  nd thus avoiding
0450: 0a 23 20 70 61 67 65 20 6c 65 61 6b 73 2e 0a 23  .# page leaks..#
0460: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31  .do_test btree-1
0470: 2e 31 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20  .1.1 {.  lindex 
0480: 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61  [btree_pager_sta
0490: 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 30  ts $::b1] 1.} {0
04a0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
04b0: 31 2e 32 20 7b 0a 20 20 73 65 74 20 72 63 20 5b  1.2 {.  set rc [
04c0: 63 61 74 63 68 20 7b 62 74 72 65 65 5f 6f 70 65  catch {btree_ope
04d0: 6e 20 74 65 73 74 31 2e 62 74 7d 20 3a 3a 62 32  n test1.bt} ::b2
04e0: 5d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20  ].} {0}.do_test 
04f0: 62 74 72 65 65 2d 31 2e 33 20 7b 0a 20 20 73 65  btree-1.3 {.  se
0500: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
0510: 65 65 5f 63 6c 6f 73 65 20 24 3a 3a 62 32 7d 20  ee_close $::b2} 
0520: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72  msg].  lappend r
0530: 63 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a  c $msg.} {0 {}}.
0540: 0a 23 20 44 6f 20 61 6e 20 69 6e 73 65 72 74 20  .# Do an insert 
0550: 61 6e 64 20 76 65 72 69 66 79 20 74 68 61 74 20  and verify that 
0560: 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
0570: 65 20 67 72 6f 77 73 20 69 6e 20 73 69 7a 65 2e  e grows in size.
0580: 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  .#.do_test btree
0590: 2d 31 2e 34 20 7b 0a 20 20 73 65 74 20 72 63 20  -1.4 {.  set rc 
05a0: 5b 63 61 74 63 68 20 7b 62 74 72 65 65 5f 62 65  [catch {btree_be
05b0: 67 69 6e 5f 74 72 61 6e 73 61 63 74 69 6f 6e 20  gin_transaction 
05c0: 24 3a 3a 62 31 7d 20 6d 73 67 5d 0a 20 20 6c 61  $::b1} msg].  la
05d0: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
05e0: 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62  {0 {}}.do_test b
05f0: 74 72 65 65 2d 31 2e 34 2e 31 20 7b 0a 20 20 6c  tree-1.4.1 {.  l
0600: 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67  index [btree_pag
0610: 65 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20  er_stats $::b1] 
0620: 31 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  1.} {1}.do_test 
0630: 62 74 72 65 65 2d 31 2e 35 20 7b 0a 20 20 73 65  btree-1.5 {.  se
0640: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
0650: 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31 20  ee_cursor $::b1 
0660: 32 20 31 7d 20 3a 3a 63 31 5d 0a 20 20 69 66 20  2 1} ::c1].  if 
0670: 7b 24 72 63 7d 20 7b 6c 61 70 70 65 6e 64 20 72  {$rc} {lappend r
0680: 63 20 24 3a 3a 63 31 7d 0a 20 20 73 65 74 20 72  c $::c1}.  set r
0690: 63 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20  c.} {0}.do_test 
06a0: 62 74 72 65 65 2d 31 2e 36 20 7b 0a 20 20 73 65  btree-1.6 {.  se
06b0: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
06c0: 65 65 5f 69 6e 73 65 72 74 20 24 3a 3a 63 31 20  ee_insert $::c1 
06d0: 6f 6e 65 20 31 2e 30 30 7d 20 6d 73 67 5d 0a 20  one 1.00} msg]. 
06e0: 20 6c 61 70 70 65 6e 64 20 72 63 20 24 6d 73 67   lappend rc $msg
06f0: 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73  .} {0 {}}.do_tes
0700: 74 20 62 74 72 65 65 2d 31 2e 37 20 7b 0a 20 20  t btree-1.7 {.  
0710: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
0720: 7d 20 7b 6f 6e 65 7d 0a 64 6f 5f 74 65 73 74 20  } {one}.do_test 
0730: 62 74 72 65 65 2d 31 2e 38 20 7b 0a 20 20 62 74  btree-1.8 {.  bt
0740: 72 65 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d  ree_data $::c1.}
0750: 20 7b 31 2e 30 30 7d 0a 64 6f 5f 74 65 73 74 20   {1.00}.do_test 
0760: 62 74 72 65 65 2d 31 2e 39 20 7b 0a 20 20 73 65  btree-1.9 {.  se
0770: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
0780: 65 65 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20  ee_close_cursor 
0790: 24 3a 3a 63 31 7d 20 6d 73 67 5d 0a 20 20 6c 61  $::c1} msg].  la
07a0: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
07b0: 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62  {0 {}}.do_test b
07c0: 74 72 65 65 2d 31 2e 31 30 20 7b 0a 20 20 73 65  tree-1.10 {.  se
07d0: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
07e0: 65 65 5f 63 6f 6d 6d 69 74 20 24 3a 3a 62 31 7d  ee_commit $::b1}
07f0: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
0800: 72 63 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d  rc $msg.} {0 {}}
0810: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31  .do_test btree-1
0820: 2e 31 31 20 7b 0a 20 20 66 69 6c 65 20 73 69 7a  .11 {.  file siz
0830: 65 20 74 65 73 74 31 2e 62 74 0a 7d 20 7b 32 30  e test1.bt.} {20
0840: 34 38 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  48}.do_test btre
0850: 65 2d 31 2e 31 32 20 7b 0a 20 20 6c 69 6e 64 65  e-1.12 {.  linde
0860: 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73  x [btree_pager_s
0870: 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20  tats $::b1] 1.} 
0880: 7b 30 7d 0a 0a 23 20 52 65 6f 70 65 6e 20 74 68  {0}..# Reopen th
0890: 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 61  e database and a
08a0: 74 74 65 6d 70 74 20 74 6f 20 72 65 61 64 20 74  ttempt to read t
08b0: 68 65 20 72 65 63 6f 72 64 20 74 68 61 74 20 77  he record that w
08c0: 65 20 77 72 6f 74 65 2e 0a 23 0a 64 6f 5f 74 65  e wrote..#.do_te
08d0: 73 74 20 62 74 72 65 65 2d 32 2e 31 20 7b 0a 20  st btree-2.1 {. 
08e0: 20 73 65 74 20 72 63 20 5b 63 61 74 63 68 20 7b   set rc [catch {
08f0: 62 74 72 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a  btree_cursor $::
0900: 62 31 20 32 20 31 7d 20 3a 3a 63 31 5d 0a 20 20  b1 2 1} ::c1].  
0910: 69 66 20 7b 24 72 63 7d 20 7b 6c 61 70 70 65 6e  if {$rc} {lappen
0920: 64 20 72 63 20 24 3a 3a 63 31 7d 0a 20 20 73 65  d rc $::c1}.  se
0930: 74 20 72 63 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65  t rc.} {0}.do_te
0940: 73 74 20 62 74 72 65 65 2d 32 2e 32 20 7b 0a 20  st btree-2.2 {. 
0950: 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24   btree_move_to $
0960: 3a 3a 63 31 20 61 62 63 0a 7d 20 7b 31 7d 0a 64  ::c1 abc.} {1}.d
0970: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 32 2e 33  o_test btree-2.3
0980: 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f   {.  btree_move_
0990: 74 6f 20 24 3a 3a 63 31 20 78 79 7a 0a 7d 20 7b  to $::c1 xyz.} {
09a0: 2d 31 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  -1}.do_test btre
09b0: 65 2d 32 2e 34 20 7b 0a 20 20 62 74 72 65 65 5f  e-2.4 {.  btree_
09c0: 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 6f 6e  move_to $::c1 on
09d0: 65 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20  e.} {0}.do_test 
09e0: 62 74 72 65 65 2d 32 2e 35 20 7b 0a 20 20 62 74  btree-2.5 {.  bt
09f0: 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20  ree_key $::c1.} 
0a00: 7b 6f 6e 65 7d 0a 64 6f 5f 74 65 73 74 20 62 74  {one}.do_test bt
0a10: 72 65 65 2d 32 2e 36 20 7b 0a 20 20 62 74 72 65  ree-2.6 {.  btre
0a20: 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 7b  e_data $::c1.} {
0a30: 31 2e 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62 74  1.00}.do_test bt
0a40: 72 65 65 2d 32 2e 37 20 7b 0a 20 20 6c 69 6e 64  ree-2.7 {.  lind
0a50: 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f  ex [btree_pager_
0a60: 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d  stats $::b1] 1.}
0a70: 20 7b 32 7d 0a 0a 23 20 44 6f 20 73 6f 6d 65 20   {2}..# Do some 
0a80: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 73 65 72  additional inser
0a90: 74 73 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72  ts.#.do_test btr
0aa0: 65 65 2d 33 2e 31 20 7b 0a 20 20 62 74 72 65 65  ee-3.1 {.  btree
0ab0: 5f 62 65 67 69 6e 5f 74 72 61 6e 73 61 63 74 69  _begin_transacti
0ac0: 6f 6e 20 24 3a 3a 62 31 0a 20 20 62 74 72 65 65  on $::b1.  btree
0ad0: 5f 69 6e 73 65 72 74 20 24 3a 3a 63 31 20 74 77  _insert $::c1 tw
0ae0: 6f 20 32 2e 30 30 0a 20 20 62 74 72 65 65 5f 6b  o 2.00.  btree_k
0af0: 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 74 77 6f 7d  ey $::c1.} {two}
0b00: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
0b10: 2e 31 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20  .1.1 {.  lindex 
0b20: 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61  [btree_pager_sta
0b30: 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32  ts $::b1] 1.} {2
0b40: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
0b50: 33 2e 32 20 7b 0a 20 20 62 74 72 65 65 5f 69 6e  3.2 {.  btree_in
0b60: 73 65 72 74 20 24 3a 3a 63 31 20 74 68 72 65 65  sert $::c1 three
0b70: 20 33 2e 30 30 0a 20 20 62 74 72 65 65 5f 6b 65   3.00.  btree_ke
0b80: 79 20 24 3a 3a 63 31 0a 7d 20 7b 74 68 72 65 65  y $::c1.} {three
0b90: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
0ba0: 33 2e 34 20 7b 0a 20 20 62 74 72 65 65 5f 69 6e  3.4 {.  btree_in
0bb0: 73 65 72 74 20 24 3a 3a 63 31 20 66 6f 75 72 20  sert $::c1 four 
0bc0: 34 2e 30 30 0a 20 20 62 74 72 65 65 5f 6b 65 79  4.00.  btree_key
0bd0: 20 24 3a 3a 63 31 0a 7d 20 7b 66 6f 75 72 7d 0a   $::c1.} {four}.
0be0: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e  do_test btree-3.
0bf0: 35 20 7b 0a 20 20 62 74 72 65 65 5f 69 6e 73 65  5 {.  btree_inse
0c00: 72 74 20 24 3a 3a 63 31 20 66 69 76 65 20 35 2e  rt $::c1 five 5.
0c10: 30 30 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24  00.  btree_key $
0c20: 3a 3a 63 31 0a 7d 20 7b 66 69 76 65 7d 0a 64 6f  ::c1.} {five}.do
0c30: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 36 20  _test btree-3.6 
0c40: 7b 0a 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74  {.  btree_insert
0c50: 20 24 3a 3a 63 31 20 73 69 78 20 36 2e 30 30 0a   $::c1 six 6.00.
0c60: 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63    btree_key $::c
0c70: 31 0a 7d 20 7b 73 69 78 7d 0a 23 62 74 72 65 65  1.} {six}.#btree
0c80: 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31  _page_dump $::b1
0c90: 20 32 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65   2.do_test btree
0ca0: 2d 33 2e 37 20 7b 0a 20 20 73 65 74 20 72 63 20  -3.7 {.  set rc 
0cb0: 5b 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24  [btree_move_to $
0cc0: 3a 3a 63 31 20 7b 7d 5d 0a 20 20 65 78 70 72 20  ::c1 {}].  expr 
0cd0: 7b 24 72 63 3e 30 7d 0a 7d 20 7b 31 7d 0a 64 6f  {$rc>0}.} {1}.do
0ce0: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 38 20  _test btree-3.8 
0cf0: 7b 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a  {.  btree_key $:
0d00: 3a 63 31 0a 7d 20 7b 66 69 76 65 7d 0a 64 6f 5f  :c1.} {five}.do_
0d10: 74 65 73 74 20 62 74 72 65 65 2d 33 2e 39 20 7b  test btree-3.9 {
0d20: 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20 24 3a  .  btree_data $:
0d30: 3a 63 31 0a 7d 20 7b 35 2e 30 30 7d 0a 64 6f 5f  :c1.} {5.00}.do_
0d40: 74 65 73 74 20 62 74 72 65 65 2d 33 2e 31 30 20  test btree-3.10 
0d50: 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78 74 20 24  {.  btree_next $
0d60: 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 6b 65 79  ::c1.  btree_key
0d70: 20 24 3a 3a 63 31 0a 7d 20 7b 66 6f 75 72 7d 0a   $::c1.} {four}.
0d80: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e  do_test btree-3.
0d90: 31 31 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74  11 {.  btree_dat
0da0: 61 20 24 3a 3a 63 31 0a 7d 20 7b 34 2e 30 30 7d  a $::c1.} {4.00}
0db0: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
0dc0: 2e 31 32 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65  .12 {.  btree_ne
0dd0: 78 74 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65  xt $::c1.  btree
0de0: 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 6f 6e  _key $::c1.} {on
0df0: 65 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  e}.do_test btree
0e00: 2d 33 2e 31 33 20 7b 0a 20 20 62 74 72 65 65 5f  -3.13 {.  btree_
0e10: 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 7b 31 2e  data $::c1.} {1.
0e20: 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  00}.do_test btre
0e30: 65 2d 33 2e 31 34 20 7b 0a 20 20 62 74 72 65 65  e-3.14 {.  btree
0e40: 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20 62 74  _next $::c1.  bt
0e50: 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20  ree_key $::c1.} 
0e60: 7b 73 69 78 7d 0a 64 6f 5f 74 65 73 74 20 62 74  {six}.do_test bt
0e70: 72 65 65 2d 33 2e 31 35 20 7b 0a 20 20 62 74 72  ree-3.15 {.  btr
0e80: 65 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20  ee_data $::c1.} 
0e90: 7b 36 2e 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62  {6.00}.do_test b
0ea0: 74 72 65 65 2d 33 2e 31 36 20 7b 0a 20 20 62 74  tree-3.16 {.  bt
0eb0: 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20  ree_next $::c1. 
0ec0: 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31   btree_key $::c1
0ed0: 0a 7d 20 7b 74 68 72 65 65 7d 0a 64 6f 5f 74 65  .} {three}.do_te
0ee0: 73 74 20 62 74 72 65 65 2d 33 2e 31 37 20 7b 0a  st btree-3.17 {.
0ef0: 20 20 62 74 72 65 65 5f 64 61 74 61 20 24 3a 3a    btree_data $::
0f00: 63 31 0a 7d 20 7b 33 2e 30 30 7d 0a 64 6f 5f 74  c1.} {3.00}.do_t
0f10: 65 73 74 20 62 74 72 65 65 2d 33 2e 31 38 20 7b  est btree-3.18 {
0f20: 0a 20 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a  .  btree_next $:
0f30: 3a 63 31 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  :c1.  btree_key 
0f40: 24 3a 3a 63 31 0a 7d 20 7b 74 77 6f 7d 0a 64 6f  $::c1.} {two}.do
0f50: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 31 39  _test btree-3.19
0f60: 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20   {.  btree_data 
0f70: 24 3a 3a 63 31 0a 7d 20 7b 32 2e 30 30 7d 0a 64  $::c1.} {2.00}.d
0f80: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32  o_test btree-3.2
0f90: 30 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78 74  0 {.  btree_next
0fa0: 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 6b   $::c1.  btree_k
0fb0: 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 64 6f  ey $::c1.} {}.do
0fc0: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32 31  _test btree-3.21
0fd0: 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20   {.  btree_data 
0fe0: 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 0a 23 20 43 6f  $::c1.} {}..# Co
0ff0: 6d 6d 69 74 20 74 68 65 20 63 68 61 6e 67 65 73  mmit the changes
1000: 2c 20 72 65 6f 70 65 6e 20 61 6e 64 20 72 65 72  , reopen and rer
1010: 65 61 64 20 74 68 65 20 64 61 74 61 0a 23 0a 64  ead the data.#.d
1020: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32  o_test btree-3.2
1030: 32 20 7b 0a 20 20 73 65 74 20 72 63 20 5b 63 61  2 {.  set rc [ca
1040: 74 63 68 20 7b 62 74 72 65 65 5f 63 6c 6f 73 65  tch {btree_close
1050: 5f 63 75 72 73 6f 72 20 24 3a 3a 63 31 7d 20 6d  _cursor $::c1} m
1060: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 63  sg].  lappend rc
1070: 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64   $msg.} {0 {}}.d
1080: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32  o_test btree-3.2
1090: 32 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b  2.1 {.  lindex [
10a0: 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74  btree_pager_stat
10b0: 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 31 7d  s $::b1] 1.} {1}
10c0: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
10d0: 2e 32 33 20 7b 0a 20 20 73 65 74 20 72 63 20 5b  .23 {.  set rc [
10e0: 63 61 74 63 68 20 7b 62 74 72 65 65 5f 63 6f 6d  catch {btree_com
10f0: 6d 69 74 20 24 3a 3a 62 31 7d 20 6d 73 67 5d 0a  mit $::b1} msg].
1100: 20 20 6c 61 70 70 65 6e 64 20 72 63 20 24 6d 73    lappend rc $ms
1110: 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  g.} {0 {}}.do_te
1120: 73 74 20 62 74 72 65 65 2d 33 2e 32 33 2e 31 20  st btree-3.23.1 
1130: 7b 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65  {.  lindex [btre
1140: 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20 24 3a  e_pager_stats $:
1150: 3a 62 31 5d 20 31 0a 7d 20 7b 30 7d 0a 64 6f 5f  :b1] 1.} {0}.do_
1160: 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32 34 20  test btree-3.24 
1170: 7b 0a 20 20 66 69 6c 65 20 73 69 7a 65 20 74 65  {.  file size te
1180: 73 74 31 2e 62 74 0a 7d 20 7b 32 30 34 38 7d 0a  st1.bt.} {2048}.
1190: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e  do_test btree-3.
11a0: 32 35 20 7b 0a 20 20 73 65 74 20 72 63 20 5b 63  25 {.  set rc [c
11b0: 61 74 63 68 20 7b 62 74 72 65 65 5f 63 75 72 73  atch {btree_curs
11c0: 6f 72 20 24 3a 3a 62 31 20 32 20 31 7d 20 3a 3a  or $::b1 2 1} ::
11d0: 63 31 5d 0a 20 20 69 66 20 7b 24 72 63 7d 20 7b  c1].  if {$rc} {
11e0: 6c 61 70 70 65 6e 64 20 72 63 20 24 3a 3a 63 31  lappend rc $::c1
11f0: 7d 0a 20 20 73 65 74 20 72 63 0a 7d 20 7b 30 7d  }.  set rc.} {0}
1200: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
1210: 2e 32 35 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78  .25.1 {.  lindex
1220: 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74   [btree_pager_st
1230: 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b  ats $::b1] 1.} {
1240: 32 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  2}.do_test btree
1250: 2d 33 2e 32 36 20 7b 0a 20 20 73 65 74 20 72 63  -3.26 {.  set rc
1260: 20 5b 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20   [btree_move_to 
1270: 24 3a 3a 63 31 20 7b 7d 5d 0a 20 20 65 78 70 72  $::c1 {}].  expr
1280: 20 7b 24 72 63 3e 30 7d 0a 7d 20 7b 31 7d 0a 64   {$rc>0}.} {1}.d
1290: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32  o_test btree-3.2
12a0: 37 20 7b 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  7 {.  btree_key 
12b0: 24 3a 3a 63 31 0a 7d 20 7b 66 69 76 65 7d 0a 64  $::c1.} {five}.d
12c0: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 32  o_test btree-3.2
12d0: 38 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74 61  8 {.  btree_data
12e0: 20 24 3a 3a 63 31 0a 7d 20 7b 35 2e 30 30 7d 0a   $::c1.} {5.00}.
12f0: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e  do_test btree-3.
1300: 32 39 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78  29 {.  btree_nex
1310: 74 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f  t $::c1.  btree_
1320: 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 66 6f 75  key $::c1.} {fou
1330: 72 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  r}.do_test btree
1340: 2d 33 2e 33 30 20 7b 0a 20 20 62 74 72 65 65 5f  -3.30 {.  btree_
1350: 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 7b 34 2e  data $::c1.} {4.
1360: 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  00}.do_test btre
1370: 65 2d 33 2e 33 31 20 7b 0a 20 20 62 74 72 65 65  e-3.31 {.  btree
1380: 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20 62 74  _next $::c1.  bt
1390: 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20  ree_key $::c1.} 
13a0: 7b 6f 6e 65 7d 0a 64 6f 5f 74 65 73 74 20 62 74  {one}.do_test bt
13b0: 72 65 65 2d 33 2e 33 32 20 7b 0a 20 20 62 74 72  ree-3.32 {.  btr
13c0: 65 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20  ee_data $::c1.} 
13d0: 7b 31 2e 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62  {1.00}.do_test b
13e0: 74 72 65 65 2d 33 2e 33 33 20 7b 0a 20 20 62 74  tree-3.33 {.  bt
13f0: 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20  ree_next $::c1. 
1400: 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31   btree_key $::c1
1410: 0a 7d 20 7b 73 69 78 7d 0a 64 6f 5f 74 65 73 74  .} {six}.do_test
1420: 20 62 74 72 65 65 2d 33 2e 33 34 20 7b 0a 20 20   btree-3.34 {.  
1430: 62 74 72 65 65 5f 64 61 74 61 20 24 3a 3a 63 31  btree_data $::c1
1440: 0a 7d 20 7b 36 2e 30 30 7d 0a 64 6f 5f 74 65 73  .} {6.00}.do_tes
1450: 74 20 62 74 72 65 65 2d 33 2e 33 35 20 7b 0a 20  t btree-3.35 {. 
1460: 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63   btree_next $::c
1470: 31 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a  1.  btree_key $:
1480: 3a 63 31 0a 7d 20 7b 74 68 72 65 65 7d 0a 64 6f  :c1.} {three}.do
1490: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 33 36  _test btree-3.36
14a0: 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20   {.  btree_data 
14b0: 24 3a 3a 63 31 0a 7d 20 7b 33 2e 30 30 7d 0a 64  $::c1.} {3.00}.d
14c0: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 33  o_test btree-3.3
14d0: 37 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78 74  7 {.  btree_next
14e0: 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 6b   $::c1.  btree_k
14f0: 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 74 77 6f 7d  ey $::c1.} {two}
1500: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
1510: 2e 33 38 20 7b 0a 20 20 62 74 72 65 65 5f 64 61  .38 {.  btree_da
1520: 74 61 20 24 3a 3a 63 31 0a 7d 20 7b 32 2e 30 30  ta $::c1.} {2.00
1530: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
1540: 33 2e 33 39 20 7b 0a 20 20 62 74 72 65 65 5f 6e  3.39 {.  btree_n
1550: 65 78 74 20 24 3a 3a 63 31 0a 20 20 62 74 72 65  ext $::c1.  btre
1560: 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 7d  e_key $::c1.} {}
1570: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 33  .do_test btree-3
1580: 2e 34 30 20 7b 0a 20 20 62 74 72 65 65 5f 64 61  .40 {.  btree_da
1590: 74 61 20 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 64 6f  ta $::c1.} {}.do
15a0: 5f 74 65 73 74 20 62 74 72 65 65 2d 33 2e 34 31  _test btree-3.41
15b0: 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72   {.  lindex [btr
15c0: 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20 24  ee_pager_stats $
15d0: 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32 7d 0a 0a 0a  ::b1] 1.} {2}...
15e0: 23 20 4e 6f 77 20 74 72 79 20 61 20 64 65 6c 65  # Now try a dele
15f0: 74 65 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72  te.#.do_test btr
1600: 65 65 2d 34 2e 31 20 7b 0a 20 20 62 74 72 65 65  ee-4.1 {.  btree
1610: 5f 62 65 67 69 6e 5f 74 72 61 6e 73 61 63 74 69  _begin_transacti
1620: 6f 6e 20 24 3a 3a 62 31 0a 20 20 62 74 72 65 65  on $::b1.  btree
1630: 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 6f  _move_to $::c1 o
1640: 6e 65 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24  ne.  btree_key $
1650: 3a 3a 63 31 0a 7d 20 7b 6f 6e 65 7d 0a 64 6f 5f  ::c1.} {one}.do_
1660: 74 65 73 74 20 62 74 72 65 65 2d 34 2e 31 2e 31  test btree-4.1.1
1670: 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72   {.  lindex [btr
1680: 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20 24  ee_pager_stats $
1690: 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32 7d 0a 64 6f  ::b1] 1.} {2}.do
16a0: 5f 74 65 73 74 20 62 74 72 65 65 2d 34 2e 32 20  _test btree-4.2 
16b0: 7b 0a 20 20 62 74 72 65 65 5f 64 65 6c 65 74 65  {.  btree_delete
16c0: 20 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 64 6f 5f 74   $::c1.} {}.do_t
16d0: 65 73 74 20 62 74 72 65 65 2d 34 2e 33 20 7b 0a  est btree-4.3 {.
16e0: 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63    btree_key $::c
16f0: 31 0a 7d 20 7b 73 69 78 7d 0a 64 6f 5f 74 65 73  1.} {six}.do_tes
1700: 74 20 62 74 72 65 65 2d 34 2e 34 20 7b 0a 20 20  t btree-4.4 {.  
1710: 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31  btree_next $::c1
1720: 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a  .  btree_key $::
1730: 63 31 0a 7d 20 7b 73 69 78 7d 0a 64 6f 5f 74 65  c1.} {six}.do_te
1740: 73 74 20 62 74 72 65 65 2d 34 2e 35 20 7b 0a 20  st btree-4.5 {. 
1750: 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63   btree_next $::c
1760: 31 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a  1.  btree_key $:
1770: 3a 63 31 0a 7d 20 7b 74 68 72 65 65 7d 0a 64 6f  :c1.} {three}.do
1780: 5f 74 65 73 74 20 62 74 72 65 65 2d 34 2e 34 20  _test btree-4.4 
1790: 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74  {.  btree_move_t
17a0: 6f 20 24 3a 3a 63 31 20 7b 7d 0a 20 20 73 65 74  o $::c1 {}.  set
17b0: 20 72 20 7b 7d 0a 20 20 77 68 69 6c 65 20 31 20   r {}.  while 1 
17c0: 7b 0a 20 20 20 20 73 65 74 20 6b 65 79 20 5b 62  {.    set key [b
17d0: 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 5d 0a  tree_key $::c1].
17e0: 20 20 20 20 69 66 20 7b 24 6b 65 79 3d 3d 22 22      if {$key==""
17f0: 7d 20 62 72 65 61 6b 0a 20 20 20 20 6c 61 70 70  } break.    lapp
1800: 65 6e 64 20 72 20 24 6b 65 79 0a 20 20 20 20 6c  end r $key.    l
1810: 61 70 70 65 6e 64 20 72 20 5b 62 74 72 65 65 5f  append r [btree_
1820: 64 61 74 61 20 24 3a 3a 63 31 5d 0a 20 20 20 20  data $::c1].    
1830: 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31  btree_next $::c1
1840: 0a 20 20 7d 0a 20 20 73 65 74 20 72 20 20 20 0a  .  }.  set r   .
1850: 7d 20 7b 66 69 76 65 20 35 2e 30 30 20 66 6f 75  } {five 5.00 fou
1860: 72 20 34 2e 30 30 20 73 69 78 20 36 2e 30 30 20  r 4.00 six 6.00 
1870: 74 68 72 65 65 20 33 2e 30 30 20 74 77 6f 20 32  three 3.00 two 2
1880: 2e 30 30 7d 0a 0a 23 20 43 6f 6d 6d 69 74 20 61  .00}..# Commit a
1890: 6e 64 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65  nd make sure the
18a0: 20 64 65 6c 65 74 65 20 69 73 20 73 74 69 6c 6c   delete is still
18b0: 20 74 68 65 72 65 2e 0a 23 0a 64 6f 5f 74 65 73   there..#.do_tes
18c0: 74 20 62 74 72 65 65 2d 34 2e 35 20 7b 0a 20 20  t btree-4.5 {.  
18d0: 62 74 72 65 65 5f 63 6f 6d 6d 69 74 20 24 3a 3a  btree_commit $::
18e0: 62 31 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f  b1.  btree_move_
18f0: 74 6f 20 24 3a 3a 63 31 20 7b 7d 0a 20 20 73 65  to $::c1 {}.  se
1900: 74 20 72 20 7b 7d 0a 20 20 77 68 69 6c 65 20 31  t r {}.  while 1
1910: 20 7b 0a 20 20 20 20 73 65 74 20 6b 65 79 20 5b   {.    set key [
1920: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 5d  btree_key $::c1]
1930: 0a 20 20 20 20 69 66 20 7b 24 6b 65 79 3d 3d 22  .    if {$key=="
1940: 22 7d 20 62 72 65 61 6b 0a 20 20 20 20 6c 61 70  "} break.    lap
1950: 70 65 6e 64 20 72 20 24 6b 65 79 0a 20 20 20 20  pend r $key.    
1960: 6c 61 70 70 65 6e 64 20 72 20 5b 62 74 72 65 65  lappend r [btree
1970: 5f 64 61 74 61 20 24 3a 3a 63 31 5d 0a 20 20 20  _data $::c1].   
1980: 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63   btree_next $::c
1990: 31 0a 20 20 7d 0a 20 20 73 65 74 20 72 20 20 20  1.  }.  set r   
19a0: 0a 7d 20 7b 66 69 76 65 20 35 2e 30 30 20 66 6f  .} {five 5.00 fo
19b0: 75 72 20 34 2e 30 30 20 73 69 78 20 36 2e 30 30  ur 4.00 six 6.00
19c0: 20 74 68 72 65 65 20 33 2e 30 30 20 74 77 6f 20   three 3.00 two 
19d0: 32 2e 30 30 7d 0a 0a 23 20 43 6f 6d 70 6c 65 74  2.00}..# Complet
19e0: 65 6c 79 20 63 6c 6f 73 65 20 74 68 65 20 64 61  ely close the da
19f0: 74 61 62 61 73 65 20 61 6e 64 20 72 65 6f 70 65  tabase and reope
1a00: 6e 20 69 74 2e 20 20 54 68 65 6e 20 63 68 65 63  n it.  Then chec
1a10: 6b 0a 23 20 74 68 65 20 64 61 74 61 20 61 67 61  k.# the data aga
1a20: 69 6e 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74  in..#.do_test bt
1a30: 72 65 65 2d 34 2e 36 20 7b 0a 20 20 6c 69 6e 64  ree-4.6 {.  lind
1a40: 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f  ex [btree_pager_
1a50: 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d  stats $::b1] 1.}
1a60: 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72   {2}.do_test btr
1a70: 65 65 2d 34 2e 37 20 7b 0a 20 20 62 74 72 65 65  ee-4.7 {.  btree
1a80: 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20 24 3a  _close_cursor $:
1a90: 3a 63 31 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74  :c1.  lindex [bt
1aa0: 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20  ree_pager_stats 
1ab0: 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 30 7d 0a 64  $::b1] 1.} {0}.d
1ac0: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 34 2e 38  o_test btree-4.8
1ad0: 20 7b 0a 20 20 62 74 72 65 65 5f 63 6c 6f 73 65   {.  btree_close
1ae0: 20 24 3a 3a 62 31 0a 20 20 73 65 74 20 3a 3a 62   $::b1.  set ::b
1af0: 31 20 5b 62 74 72 65 65 5f 6f 70 65 6e 20 74 65  1 [btree_open te
1b00: 73 74 31 2e 62 74 5d 0a 20 20 73 65 74 20 3a 3a  st1.bt].  set ::
1b10: 63 31 20 5b 62 74 72 65 65 5f 63 75 72 73 6f 72  c1 [btree_cursor
1b20: 20 24 3a 3a 62 31 20 32 20 31 5d 0a 20 20 6c 69   $::b1 2 1].  li
1b30: 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65  ndex [btree_page
1b40: 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31  r_stats $::b1] 1
1b50: 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 62  .} {2}.do_test b
1b60: 74 72 65 65 2d 34 2e 39 20 7b 0a 20 20 73 65 74  tree-4.9 {.  set
1b70: 20 72 20 7b 7d 0a 20 20 77 68 69 6c 65 20 31 20   r {}.  while 1 
1b80: 7b 0a 20 20 20 20 73 65 74 20 6b 65 79 20 5b 62  {.    set key [b
1b90: 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 5d 0a  tree_key $::c1].
1ba0: 20 20 20 20 69 66 20 7b 24 6b 65 79 3d 3d 22 22      if {$key==""
1bb0: 7d 20 62 72 65 61 6b 0a 20 20 20 20 6c 61 70 70  } break.    lapp
1bc0: 65 6e 64 20 72 20 24 6b 65 79 0a 20 20 20 20 6c  end r $key.    l
1bd0: 61 70 70 65 6e 64 20 72 20 5b 62 74 72 65 65 5f  append r [btree_
1be0: 64 61 74 61 20 24 3a 3a 63 31 5d 0a 20 20 20 20  data $::c1].    
1bf0: 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31  btree_next $::c1
1c00: 0a 20 20 7d 0a 20 20 73 65 74 20 72 20 20 20 0a  .  }.  set r   .
1c10: 7d 20 7b 66 69 76 65 20 35 2e 30 30 20 66 6f 75  } {five 5.00 fou
1c20: 72 20 34 2e 30 30 20 73 69 78 20 36 2e 30 30 20  r 4.00 six 6.00 
1c30: 74 68 72 65 65 20 33 2e 30 30 20 74 77 6f 20 32  three 3.00 two 2
1c40: 2e 30 30 7d 0a 0a 23 20 54 72 79 20 74 6f 20 72  .00}..# Try to r
1c50: 65 61 64 20 61 6e 64 20 77 72 69 74 65 20 6d 65  ead and write me
1c60: 74 61 20 64 61 74 61 0a 23 0a 64 6f 5f 74 65 73  ta data.#.do_tes
1c70: 74 20 62 74 72 65 65 2d 35 2e 31 20 7b 0a 20 20  t btree-5.1 {.  
1c80: 62 74 72 65 65 5f 67 65 74 5f 6d 65 74 61 20 24  btree_get_meta $
1c90: 3a 3a 62 31 0a 7d 20 7b 30 20 30 20 30 20 30 7d  ::b1.} {0 0 0 0}
1ca0: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 35  .do_test btree-5
1cb0: 2e 32 20 7b 0a 20 20 73 65 74 20 72 63 20 5b 63  .2 {.  set rc [c
1cc0: 61 74 63 68 20 7b 62 74 72 65 65 5f 75 70 64 61  atch {btree_upda
1cd0: 74 65 5f 6d 65 74 61 20 24 3a 3a 62 31 20 31 20  te_meta $::b1 1 
1ce0: 32 20 33 20 34 7d 20 6d 73 67 5d 0a 20 20 6c 61  2 3 4} msg].  la
1cf0: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
1d00: 7b 31 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 7d  {1 SQLITE_ERROR}
1d10: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 35  .do_test btree-5
1d20: 2e 33 20 7b 0a 20 20 62 74 72 65 65 5f 62 65 67  .3 {.  btree_beg
1d30: 69 6e 5f 74 72 61 6e 73 61 63 74 69 6f 6e 20 24  in_transaction $
1d40: 3a 3a 62 31 0a 20 20 73 65 74 20 72 63 20 5b 63  ::b1.  set rc [c
1d50: 61 74 63 68 20 7b 62 74 72 65 65 5f 75 70 64 61  atch {btree_upda
1d60: 74 65 5f 6d 65 74 61 20 24 3a 3a 62 31 20 31 20  te_meta $::b1 1 
1d70: 32 20 33 20 34 7d 20 6d 73 67 5d 0a 20 20 6c 61  2 3 4} msg].  la
1d80: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
1d90: 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62  {0 {}}.do_test b
1da0: 74 72 65 65 2d 35 2e 34 20 7b 0a 20 20 62 74 72  tree-5.4 {.  btr
1db0: 65 65 5f 67 65 74 5f 6d 65 74 61 20 24 3a 3a 62  ee_get_meta $::b
1dc0: 31 0a 7d 20 7b 30 20 32 20 33 20 34 7d 0a 64 6f  1.} {0 2 3 4}.do
1dd0: 5f 74 65 73 74 20 62 74 72 65 65 2d 35 2e 35 20  _test btree-5.5 
1de0: 7b 0a 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 5f  {.  btree_close_
1df0: 63 75 72 73 6f 72 20 24 3a 3a 63 31 0a 20 20 62  cursor $::c1.  b
1e00: 74 72 65 65 5f 72 6f 6c 6c 62 61 63 6b 20 24 3a  tree_rollback $:
1e10: 3a 62 31 0a 20 20 62 74 72 65 65 5f 67 65 74 5f  :b1.  btree_get_
1e20: 6d 65 74 61 20 24 3a 3a 62 31 0a 7d 20 7b 30 20  meta $::b1.} {0 
1e30: 30 20 30 20 30 7d 0a 64 6f 5f 74 65 73 74 20 62  0 0 0}.do_test b
1e40: 74 72 65 65 2d 35 2e 36 20 7b 0a 20 20 62 74 72  tree-5.6 {.  btr
1e50: 65 65 5f 62 65 67 69 6e 5f 74 72 61 6e 73 61 63  ee_begin_transac
1e60: 74 69 6f 6e 20 24 3a 3a 62 31 0a 20 20 62 74 72  tion $::b1.  btr
1e70: 65 65 5f 75 70 64 61 74 65 5f 6d 65 74 61 20 24  ee_update_meta $
1e80: 3a 3a 62 31 20 39 39 39 20 31 30 20 32 30 20 33  ::b1 999 10 20 3
1e90: 30 0a 20 20 62 74 72 65 65 5f 63 6f 6d 6d 69 74  0.  btree_commit
1ea0: 20 24 3a 3a 62 31 0a 20 20 62 74 72 65 65 5f 67   $::b1.  btree_g
1eb0: 65 74 5f 6d 65 74 61 20 24 3a 3a 62 31 0a 7d 20  et_meta $::b1.} 
1ec0: 7b 30 20 31 30 20 32 30 20 33 30 7d 0a 0a 70 72  {0 10 20 30}..pr
1ed0: 6f 63 20 73 65 6c 65 63 74 5f 61 6c 6c 20 7b 63  oc select_all {c
1ee0: 75 72 73 6f 72 7d 20 7b 0a 20 20 73 65 74 20 72  ursor} {.  set r
1ef0: 20 7b 7d 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65   {}.  btree_move
1f00: 5f 74 6f 20 24 63 75 72 73 6f 72 20 7b 7d 0a 20  _to $cursor {}. 
1f10: 20 77 68 69 6c 65 20 31 20 7b 0a 20 20 20 20 73   while 1 {.    s
1f20: 65 74 20 6b 65 79 20 5b 62 74 72 65 65 5f 6b 65  et key [btree_ke
1f30: 79 20 24 63 75 72 73 6f 72 5d 0a 20 20 20 20 69  y $cursor].    i
1f40: 66 20 7b 24 6b 65 79 3d 3d 22 22 7d 20 62 72 65  f {$key==""} bre
1f50: 61 6b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 72  ak.    lappend r
1f60: 20 24 6b 65 79 0a 20 20 20 20 6c 61 70 70 65 6e   $key.    lappen
1f70: 64 20 72 20 5b 62 74 72 65 65 5f 64 61 74 61 20  d r [btree_data 
1f80: 24 63 75 72 73 6f 72 5d 0a 20 20 20 20 62 74 72  $cursor].    btr
1f90: 65 65 5f 6e 65 78 74 20 24 63 75 72 73 6f 72 0a  ee_next $cursor.
1fa0: 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 24 72 0a    }.  return $r.
1fb0: 7d 0a 70 72 6f 63 20 73 65 6c 65 63 74 5f 6b 65  }.proc select_ke
1fc0: 79 73 20 7b 63 75 72 73 6f 72 7d 20 7b 0a 20 20  ys {cursor} {.  
1fd0: 73 65 74 20 72 20 7b 7d 0a 20 20 62 74 72 65 65  set r {}.  btree
1fe0: 5f 6d 6f 76 65 5f 74 6f 20 24 63 75 72 73 6f 72  _move_to $cursor
1ff0: 20 7b 7d 0a 20 20 77 68 69 6c 65 20 31 20 7b 0a   {}.  while 1 {.
2000: 20 20 20 20 73 65 74 20 6b 65 79 20 5b 62 74 72      set key [btr
2010: 65 65 5f 6b 65 79 20 24 63 75 72 73 6f 72 5d 0a  ee_key $cursor].
2020: 20 20 20 20 69 66 20 7b 24 6b 65 79 3d 3d 22 22      if {$key==""
2030: 7d 20 62 72 65 61 6b 0a 20 20 20 20 6c 61 70 70  } break.    lapp
2040: 65 6e 64 20 72 20 24 6b 65 79 0a 20 20 20 20 62  end r $key.    b
2050: 74 72 65 65 5f 6e 65 78 74 20 24 63 75 72 73 6f  tree_next $curso
2060: 72 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 24  r.  }.  return $
2070: 72 0a 7d 0a 0a 23 20 54 72 79 20 74 6f 20 63 72  r.}..# Try to cr
2080: 65 61 74 65 20 61 20 6e 65 77 20 74 61 62 6c 65  eate a new table
2090: 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   in the database
20a0: 20 66 69 6c 65 0a 23 0a 64 6f 5f 74 65 73 74 20   file.#.do_test 
20b0: 62 74 72 65 65 2d 36 2e 31 20 7b 0a 20 20 73 65  btree-6.1 {.  se
20c0: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 62 74 72  t rc [catch {btr
20d0: 65 65 5f 63 72 65 61 74 65 5f 74 61 62 6c 65 20  ee_create_table 
20e0: 24 3a 3a 62 31 7d 20 6d 73 67 5d 0a 20 20 6c 61  $::b1} msg].  la
20f0: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
2100: 7b 31 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 7d  {1 SQLITE_ERROR}
2110: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 36  .do_test btree-6
2120: 2e 32 20 7b 0a 20 20 62 74 72 65 65 5f 62 65 67  .2 {.  btree_beg
2130: 69 6e 5f 74 72 61 6e 73 61 63 74 69 6f 6e 20 24  in_transaction $
2140: 3a 3a 62 31 0a 20 20 73 65 74 20 3a 3a 74 32 20  ::b1.  set ::t2 
2150: 5b 62 74 72 65 65 5f 63 72 65 61 74 65 5f 74 61  [btree_create_ta
2160: 62 6c 65 20 24 3a 3a 62 31 5d 0a 7d 20 7b 33 7d  ble $::b1].} {3}
2170: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 36  .do_test btree-6
2180: 2e 32 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20  .2.1 {.  lindex 
2190: 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61  [btree_pager_sta
21a0: 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 31  ts $::b1] 1.} {1
21b0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
21c0: 36 2e 32 2e 32 20 7b 0a 20 20 73 65 74 20 3a 3a  6.2.2 {.  set ::
21d0: 63 32 20 5b 62 74 72 65 65 5f 63 75 72 73 6f 72  c2 [btree_cursor
21e0: 20 24 3a 3a 62 31 20 24 3a 3a 74 32 20 31 5d 0a   $::b1 $::t2 1].
21f0: 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f    lindex [btree_
2200: 70 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 62  pager_stats $::b
2210: 31 5d 20 31 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65  1] 1.} {2}.do_te
2220: 73 74 20 62 74 72 65 65 2d 36 2e 32 2e 33 20 7b  st btree-6.2.3 {
2230: 0a 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74 20  .  btree_insert 
2240: 24 3a 3a 63 32 20 74 65 6e 20 31 30 0a 20 20 62  $::c2 ten 10.  b
2250: 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 32 0a 7d  tree_key $::c2.}
2260: 20 7b 74 65 6e 7d 0a 64 6f 5f 74 65 73 74 20 62   {ten}.do_test b
2270: 74 72 65 65 2d 36 2e 33 20 7b 0a 20 20 62 74 72  tree-6.3 {.  btr
2280: 65 65 5f 63 6f 6d 6d 69 74 20 24 3a 3a 62 31 0a  ee_commit $::b1.
2290: 20 20 73 65 74 20 3a 3a 63 31 20 5b 62 74 72 65    set ::c1 [btre
22a0: 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31 20 32  e_cursor $::b1 2
22b0: 20 31 5d 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74   1].  lindex [bt
22c0: 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20  ree_pager_stats 
22d0: 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 33 7d 0a 64  $::b1] 1.} {3}.d
22e0: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 36 2e 33  o_test btree-6.3
22f0: 2e 31 20 7b 0a 20 20 73 65 6c 65 63 74 5f 61 6c  .1 {.  select_al
2300: 6c 20 24 3a 3a 63 31 0a 7d 20 7b 66 69 76 65 20  l $::c1.} {five 
2310: 35 2e 30 30 20 66 6f 75 72 20 34 2e 30 30 20 73  5.00 four 4.00 s
2320: 69 78 20 36 2e 30 30 20 74 68 72 65 65 20 33 2e  ix 6.00 three 3.
2330: 30 30 20 74 77 6f 20 32 2e 30 30 7d 0a 23 62 74  00 two 2.00}.#bt
2340: 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a  ree_page_dump $:
2350: 3a 62 31 20 33 0a 64 6f 5f 74 65 73 74 20 62 74  :b1 3.do_test bt
2360: 72 65 65 2d 36 2e 34 20 7b 0a 20 20 73 65 6c 65  ree-6.4 {.  sele
2370: 63 74 5f 61 6c 6c 20 24 3a 3a 63 32 0a 7d 20 7b  ct_all $::c2.} {
2380: 74 65 6e 20 31 30 7d 0a 0a 23 20 44 72 6f 70 20  ten 10}..# Drop 
2390: 74 68 65 20 6e 65 77 20 74 61 62 6c 65 2c 20 74  the new table, t
23a0: 68 65 6e 20 63 72 65 61 74 65 20 69 74 20 61 67  hen create it ag
23b0: 61 69 6e 20 61 6e 65 77 2e 0a 23 0a 64 6f 5f 74  ain anew..#.do_t
23c0: 65 73 74 20 62 74 72 65 65 2d 36 2e 35 20 7b 0a  est btree-6.5 {.
23d0: 20 20 62 74 72 65 65 5f 62 65 67 69 6e 5f 74 72    btree_begin_tr
23e0: 61 6e 73 61 63 74 69 6f 6e 20 24 3a 3a 62 31 0a  ansaction $::b1.
23f0: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  } {}.do_test btr
2400: 65 65 2d 36 2e 36 20 7b 0a 20 20 62 74 72 65 65  ee-6.6 {.  btree
2410: 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20 24 3a  _close_cursor $:
2420: 3a 63 32 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74  :c2.} {}.do_test
2430: 20 62 74 72 65 65 2d 36 2e 36 2e 31 20 7b 0a 20   btree-6.6.1 {. 
2440: 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 70   lindex [btree_p
2450: 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 62 31  ager_stats $::b1
2460: 5d 20 31 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73  ] 1.} {2}.do_tes
2470: 74 20 62 74 72 65 65 2d 36 2e 37 20 7b 0a 20 20  t btree-6.7 {.  
2480: 62 74 72 65 65 5f 64 72 6f 70 5f 74 61 62 6c 65  btree_drop_table
2490: 20 24 3a 3a 62 31 20 24 3a 3a 74 32 0a 7d 20 7b   $::b1 $::t2.} {
24a0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
24b0: 36 2e 37 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78  6.7.1 {.  lindex
24c0: 20 5b 62 74 72 65 65 5f 67 65 74 5f 6d 65 74 61   [btree_get_meta
24d0: 20 24 3a 3a 62 31 5d 20 30 0a 7d 20 7b 31 7d 0a   $::b1] 0.} {1}.
24e0: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 36 2e  do_test btree-6.
24f0: 38 20 7b 0a 20 20 73 65 74 20 3a 3a 74 32 20 5b  8 {.  set ::t2 [
2500: 62 74 72 65 65 5f 63 72 65 61 74 65 5f 74 61 62  btree_create_tab
2510: 6c 65 20 24 3a 3a 62 31 5d 0a 7d 20 7b 33 7d 0a  le $::b1].} {3}.
2520: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 36 2e  do_test btree-6.
2530: 38 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b  8.1 {.  lindex [
2540: 62 74 72 65 65 5f 67 65 74 5f 6d 65 74 61 20 24  btree_get_meta $
2550: 3a 3a 62 31 5d 20 30 0a 7d 20 7b 30 7d 0a 64 6f  ::b1] 0.} {0}.do
2560: 5f 74 65 73 74 20 62 74 72 65 65 2d 36 2e 39 20  _test btree-6.9 
2570: 7b 0a 20 20 73 65 74 20 3a 3a 63 32 20 5b 62 74  {.  set ::c2 [bt
2580: 72 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31  ree_cursor $::b1
2590: 20 24 3a 3a 74 32 20 31 5d 0a 20 20 6c 69 6e 64   $::t2 1].  lind
25a0: 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f  ex [btree_pager_
25b0: 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d  stats $::b1] 1.}
25c0: 20 7b 33 7d 0a 0a 64 6f 5f 74 65 73 74 20 62 74   {3}..do_test bt
25d0: 72 65 65 2d 36 2e 39 2e 31 20 7b 0a 20 20 62 74  ree-6.9.1 {.  bt
25e0: 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63  ree_move_to $::c
25f0: 32 20 7b 7d 0a 20 20 62 74 72 65 65 5f 6b 65 79  2 {}.  btree_key
2600: 20 24 3a 3a 63 32 0a 7d 20 7b 7d 0a 0a 23 20 49   $::c2.} {}..# I
2610: 66 20 77 65 20 64 72 6f 70 20 74 61 62 6c 65 20  f we drop table 
2620: 32 20 69 74 20 6a 75 73 74 20 63 6c 65 61 72 73  2 it just clears
2630: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 61 62   the table.  Tab
2640: 6c 65 20 32 20 61 6c 77 61 79 73 20 65 78 69 73  le 2 always exis
2650: 74 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74  ts..#.do_test bt
2660: 72 65 65 2d 36 2e 31 30 20 7b 0a 20 20 62 74 72  ree-6.10 {.  btr
2670: 65 65 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20  ee_close_cursor 
2680: 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 64 72  $::c1.  btree_dr
2690: 6f 70 5f 74 61 62 6c 65 20 24 3a 3a 62 31 20 32  op_table $::b1 2
26a0: 0a 20 20 73 65 74 20 3a 3a 63 31 20 5b 62 74 72  .  set ::c1 [btr
26b0: 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31 20  ee_cursor $::b1 
26c0: 32 20 31 5d 0a 20 20 62 74 72 65 65 5f 6d 6f 76  2 1].  btree_mov
26d0: 65 5f 74 6f 20 24 3a 3a 63 31 20 7b 7d 0a 20 20  e_to $::c1 {}.  
26e0: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
26f0: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  } {}.do_test btr
2700: 65 65 2d 36 2e 31 31 20 7b 0a 20 20 62 74 72 65  ee-6.11 {.  btre
2710: 65 5f 63 6f 6d 6d 69 74 20 24 3a 3a 62 31 0a 20  e_commit $::b1. 
2720: 20 73 65 6c 65 63 74 5f 61 6c 6c 20 24 3a 3a 63   select_all $::c
2730: 31 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62  1.} {}.do_test b
2740: 74 72 65 65 2d 36 2e 31 32 20 7b 0a 20 20 73 65  tree-6.12 {.  se
2750: 6c 65 63 74 5f 61 6c 6c 20 24 3a 3a 63 32 0a 7d  lect_all $::c2.}
2760: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65   {}.do_test btre
2770: 65 2d 36 2e 31 33 20 7b 0a 20 20 62 74 72 65 65  e-6.13 {.  btree
2780: 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20 24 3a  _close_cursor $:
2790: 3a 63 32 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74  :c2.  lindex [bt
27a0: 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20  ree_pager_stats 
27b0: 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32 7d 0a 0a  $::b1] 1.} {2}..
27c0: 23 20 43 68 65 63 6b 20 74 6f 20 73 65 65 20 74  # Check to see t
27d0: 68 61 74 20 70 61 67 65 73 20 64 65 66 72 61 67  hat pages defrag
27e0: 6d 65 6e 74 20 70 72 6f 70 65 72 6c 79 2e 20 20  ment properly.  
27f0: 54 6f 20 64 6f 20 74 68 69 73 20 74 65 73 74 20  To do this test 
2800: 77 65 20 77 69 6c 6c 0a 23 20 0a 23 20 20 20 31  we will.# .#   1
2810: 2e 20 20 46 69 6c 6c 20 74 68 65 20 66 69 72 73  .  Fill the firs
2820: 74 20 70 61 67 65 20 74 61 62 6c 65 20 32 20 77  t page table 2 w
2830: 69 74 68 20 64 61 74 61 2e 0a 23 20 20 20 32 2e  ith data..#   2.
2840: 20 20 44 65 6c 65 74 65 20 65 76 65 72 79 20 6f    Delete every o
2850: 74 68 65 72 20 65 6e 74 72 79 20 6f 66 20 74 61  ther entry of ta
2860: 62 6c 65 20 32 2e 20 0a 23 20 20 20 33 2e 20 20  ble 2. .#   3.  
2870: 49 6e 73 65 72 74 20 61 20 73 69 6e 67 6c 65 20  Insert a single 
2880: 65 6e 74 72 79 20 74 68 61 74 20 72 65 71 75 69  entry that requi
2890: 72 65 73 20 6d 6f 72 65 20 63 6f 6e 74 69 67 75  res more contigu
28a0: 6f 75 73 0a 23 20 20 20 20 20 20 20 73 70 61 63  ous.#       spac
28b0: 65 20 74 68 61 6e 20 69 73 20 61 76 61 69 6c 61  e than is availa
28c0: 62 6c 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 62  ble..#.do_test b
28d0: 74 72 65 65 2d 37 2e 31 20 7b 0a 20 20 62 74 72  tree-7.1 {.  btr
28e0: 65 65 5f 62 65 67 69 6e 5f 74 72 61 6e 73 61 63  ee_begin_transac
28f0: 74 69 6f 6e 20 24 3a 3a 62 31 0a 7d 20 7b 7d 0a  tion $::b1.} {}.
2900: 63 61 74 63 68 20 7b 75 6e 73 65 74 20 6b 65 79  catch {unset key
2910: 7d 0a 63 61 74 63 68 20 7b 75 6e 73 65 74 20 64  }.catch {unset d
2920: 61 74 61 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  ata}.do_test btr
2930: 65 65 2d 37 2e 32 20 7b 0a 20 20 66 6f 72 20 7b  ee-7.2 {.  for {
2940: 73 65 74 20 69 20 30 7d 20 7b 24 69 3c 33 36 7d  set i 0} {$i<36}
2950: 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20   {incr i} {.    
2960: 73 65 74 20 6b 65 79 20 5b 66 6f 72 6d 61 74 20  set key [format 
2970: 25 30 33 64 20 24 69 5d 0a 20 20 20 20 73 65 74  %03d $i].    set
2980: 20 64 61 74 61 20 22 2a 2a 2a 20 24 6b 65 79 20   data "*** $key 
2990: 2a 2a 2a 22 0a 20 20 20 20 62 74 72 65 65 5f 69  ***".    btree_i
29a0: 6e 73 65 72 74 20 24 3a 3a 63 31 20 24 6b 65 79  nsert $::c1 $key
29b0: 20 24 64 61 74 61 0a 20 20 7d 0a 20 20 6c 72 61   $data.  }.  lra
29c0: 6e 67 65 20 5b 62 74 72 65 65 5f 63 75 72 73 6f  nge [btree_curso
29d0: 72 5f 64 75 6d 70 20 24 3a 3a 63 31 5d 20 34 20  r_dump $::c1] 4 
29e0: 35 0a 7d 20 7b 38 20 31 7d 0a 64 6f 5f 74 65 73  5.} {8 1}.do_tes
29f0: 74 20 62 74 72 65 65 2d 37 2e 33 20 7b 0a 20 20  t btree-7.3 {.  
2a00: 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a  btree_move_to $:
2a10: 3a 63 31 20 30 30 30 0a 20 20 77 68 69 6c 65 20  :c1 000.  while 
2a20: 7b 5b 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63  {[btree_key $::c
2a30: 31 5d 21 3d 22 22 7d 20 7b 0a 20 20 20 20 62 74  1]!=""} {.    bt
2a40: 72 65 65 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31  ree_delete $::c1
2a50: 0a 20 20 20 20 62 74 72 65 65 5f 6e 65 78 74 20  .    btree_next 
2a60: 24 3a 3a 63 31 0a 20 20 20 20 62 74 72 65 65 5f  $::c1.    btree_
2a70: 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20 7d 0a 20  next $::c1.  }. 
2a80: 20 6c 72 61 6e 67 65 20 5b 62 74 72 65 65 5f 63   lrange [btree_c
2a90: 75 72 73 6f 72 5f 64 75 6d 70 20 24 3a 3a 63 31  ursor_dump $::c1
2aa0: 5d 20 34 20 35 0a 7d 20 7b 35 31 32 20 31 39 7d  ] 4 5.} {512 19}
2ab0: 0a 23 62 74 72 65 65 5f 70 61 67 65 5f 64 75 6d  .#btree_page_dum
2ac0: 70 20 24 3a 3a 62 31 20 32 0a 64 6f 5f 74 65 73  p $::b1 2.do_tes
2ad0: 74 20 62 74 72 65 65 2d 37 2e 34 20 7b 0a 20 20  t btree-7.4 {.  
2ae0: 62 74 72 65 65 5f 69 6e 73 65 72 74 20 24 3a 3a  btree_insert $::
2af0: 63 31 20 30 31 38 20 7b 2a 2a 2a 20 30 31 38 20  c1 018 {*** 018 
2b00: 2a 2a 2a 2b 2b 2b 7d 0a 20 20 62 74 72 65 65 5f  ***+++}.  btree_
2b10: 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 30 31 38  key $::c1.} {018
2b20: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
2b30: 37 2e 35 20 7b 0a 20 20 6c 72 61 6e 67 65 20 5b  7.5 {.  lrange [
2b40: 62 74 72 65 65 5f 63 75 72 73 6f 72 5f 64 75 6d  btree_cursor_dum
2b50: 70 20 24 3a 3a 63 31 5d 20 34 20 35 0a 7d 20 7b  p $::c1] 4 5.} {
2b60: 34 38 30 20 31 7d 0a 23 62 74 72 65 65 5f 70 61  480 1}.#btree_pa
2b70: 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31 20 32 0a  ge_dump $::b1 2.
2b80: 0a 23 20 44 65 6c 65 74 65 20 61 6e 20 65 6e 74  .# Delete an ent
2b90: 72 79 20 74 6f 20 6d 61 6b 65 20 61 20 68 6f 6c  ry to make a hol
2ba0: 65 20 6f 66 20 61 20 6b 6e 6f 77 6e 20 73 69 7a  e of a known siz
2bb0: 65 2c 20 74 68 65 6e 20 69 6d 6d 65 64 69 61 74  e, then immediat
2bc0: 65 6c 79 20 72 65 63 72 65 61 74 65 0a 23 20 74  ely recreate.# t
2bd0: 68 61 74 20 65 6e 74 72 79 2e 20 20 54 68 69 73  hat entry.  This
2be0: 20 74 65 73 74 73 20 74 68 65 20 70 61 74 68 20   tests the path 
2bf0: 69 6e 74 6f 20 61 6c 6c 6f 63 61 74 65 53 70 61  into allocateSpa
2c00: 63 65 20 77 68 65 72 65 20 74 68 65 20 68 6f 6c  ce where the hol
2c10: 65 20 65 78 61 63 74 6c 79 0a 23 20 6d 61 74 63  e exactly.# matc
2c20: 68 65 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20  hes the size of 
2c30: 74 68 65 20 64 65 73 69 72 65 64 20 73 70 61 63  the desired spac
2c40: 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72  e..#.do_test btr
2c50: 65 65 2d 37 2e 36 20 7b 0a 20 20 62 74 72 65 65  ee-7.6 {.  btree
2c60: 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 30  _move_to $::c1 0
2c70: 30 37 0a 20 20 62 74 72 65 65 5f 64 65 6c 65 74  07.  btree_delet
2c80: 65 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f  e $::c1.  btree_
2c90: 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 30 31  move_to $::c1 01
2ca0: 31 0a 20 20 62 74 72 65 65 5f 64 65 6c 65 74 65  1.  btree_delete
2cb0: 20 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 64 6f 5f 74   $::c1.} {}.do_t
2cc0: 65 73 74 20 62 74 72 65 65 2d 37 2e 37 20 7b 0a  est btree-7.7 {.
2cd0: 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f    lindex [btree_
2ce0: 63 75 72 73 6f 72 5f 64 75 6d 70 20 24 3a 3a 63  cursor_dump $::c
2cf0: 31 5d 20 35 0a 7d 20 7b 33 7d 0a 23 62 74 72 65  1] 5.} {3}.#btre
2d00: 65 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62  e_page_dump $::b
2d10: 31 20 32 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  1 2.do_test btre
2d20: 65 2d 37 2e 38 20 7b 0a 20 20 62 74 72 65 65 5f  e-7.8 {.  btree_
2d30: 69 6e 73 65 72 74 20 24 3a 3a 63 31 20 30 30 37  insert $::c1 007
2d40: 20 7b 2a 2a 2a 20 30 30 37 20 2a 2a 2a 7d 0a 20   {*** 007 ***}. 
2d50: 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 63   lindex [btree_c
2d60: 75 72 73 6f 72 5f 64 75 6d 70 20 24 3a 3a 63 31  ursor_dump $::c1
2d70: 5d 20 35 0a 7d 20 7b 32 7d 0a 23 62 74 72 65 65  ] 5.} {2}.#btree
2d80: 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31  _page_dump $::b1
2d90: 20 32 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 20   2..# Make sure 
2da0: 74 68 65 20 66 72 65 65 53 70 61 63 65 28 29 20  the freeSpace() 
2db0: 72 6f 75 74 69 6e 65 20 70 72 6f 70 65 72 6c 79  routine properly
2dc0: 20 63 6f 61 6c 65 73 65 73 20 61 64 6a 61 63 65   coaleses adjace
2dd0: 6e 74 20 6d 65 6d 6f 72 79 20 62 6c 6f 63 6b 73  nt memory blocks
2de0: 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  .#.do_test btree
2df0: 2d 37 2e 39 20 7b 0a 20 20 62 74 72 65 65 5f 6d  -7.9 {.  btree_m
2e00: 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 30 31 33  ove_to $::c1 013
2e10: 0a 20 20 62 74 72 65 65 5f 64 65 6c 65 74 65 20  .  btree_delete 
2e20: 24 3a 3a 63 31 0a 20 20 6c 72 61 6e 67 65 20 5b  $::c1.  lrange [
2e30: 62 74 72 65 65 5f 63 75 72 73 6f 72 5f 64 75 6d  btree_cursor_dum
2e40: 70 20 24 3a 3a 63 31 5d 20 34 20 35 0a 7d 20 7b  p $::c1] 4 5.} {
2e50: 35 33 36 20 32 7d 0a 64 6f 5f 74 65 73 74 20 62  536 2}.do_test b
2e60: 74 72 65 65 2d 37 2e 31 30 20 7b 0a 20 20 62 74  tree-7.10 {.  bt
2e70: 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63  ree_move_to $::c
2e80: 31 20 30 30 39 0a 20 20 62 74 72 65 65 5f 64 65  1 009.  btree_de
2e90: 6c 65 74 65 20 24 3a 3a 63 31 0a 20 20 6c 72 61  lete $::c1.  lra
2ea0: 6e 67 65 20 5b 62 74 72 65 65 5f 63 75 72 73 6f  nge [btree_curso
2eb0: 72 5f 64 75 6d 70 20 24 3a 3a 63 31 5d 20 34 20  r_dump $::c1] 4 
2ec0: 35 0a 7d 20 7b 35 36 34 20 32 7d 0a 64 6f 5f 74  5.} {564 2}.do_t
2ed0: 65 73 74 20 62 74 72 65 65 2d 37 2e 31 31 20 7b  est btree-7.11 {
2ee0: 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f  .  btree_move_to
2ef0: 20 24 3a 3a 63 31 20 30 31 38 0a 20 20 62 74 72   $::c1 018.  btr
2f00: 65 65 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31 0a  ee_delete $::c1.
2f10: 20 20 6c 72 61 6e 67 65 20 5b 62 74 72 65 65 5f    lrange [btree_
2f20: 63 75 72 73 6f 72 5f 64 75 6d 70 20 24 3a 3a 63  cursor_dump $::c
2f30: 31 5d 20 34 20 35 0a 7d 20 7b 35 39 36 20 32 7d  1] 4 5.} {596 2}
2f40: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 37  .do_test btree-7
2f50: 2e 31 33 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f  .13 {.  btree_mo
2f60: 76 65 5f 74 6f 20 24 3a 3a 63 31 20 30 33 33 0a  ve_to $::c1 033.
2f70: 20 20 62 74 72 65 65 5f 64 65 6c 65 74 65 20 24    btree_delete $
2f80: 3a 3a 63 31 0a 20 20 6c 72 61 6e 67 65 20 5b 62  ::c1.  lrange [b
2f90: 74 72 65 65 5f 63 75 72 73 6f 72 5f 64 75 6d 70  tree_cursor_dump
2fa0: 20 24 3a 3a 63 31 5d 20 34 20 35 0a 7d 20 7b 36   $::c1] 4 5.} {6
2fb0: 32 34 20 33 7d 0a 64 6f 5f 74 65 73 74 20 62 74  24 3}.do_test bt
2fc0: 72 65 65 2d 37 2e 31 34 20 7b 0a 20 20 62 74 72  ree-7.14 {.  btr
2fd0: 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31  ee_move_to $::c1
2fe0: 20 30 33 35 0a 20 20 62 74 72 65 65 5f 64 65 6c   035.  btree_del
2ff0: 65 74 65 20 24 3a 3a 63 31 0a 20 20 6c 72 61 6e  ete $::c1.  lran
3000: 67 65 20 5b 62 74 72 65 65 5f 63 75 72 73 6f 72  ge [btree_cursor
3010: 5f 64 75 6d 70 20 24 3a 3a 63 31 5d 20 34 20 35  _dump $::c1] 4 5
3020: 0a 7d 20 7b 36 35 32 20 32 7d 0a 23 62 74 72 65  .} {652 2}.#btre
3030: 65 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62  e_page_dump $::b
3040: 31 20 32 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  1 2.do_test btre
3050: 65 2d 37 2e 31 35 20 7b 0a 20 20 6c 69 6e 64 65  e-7.15 {.  linde
3060: 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73  x [btree_pager_s
3070: 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20  tats $::b1] 1.} 
3080: 7b 32 7d 0a 0a 23 20 43 68 65 63 6b 20 74 6f 20  {2}..# Check to 
3090: 73 65 65 20 74 68 61 74 20 64 61 74 61 20 6f 6e  see that data on
30a0: 20 6f 76 65 72 66 6c 6f 77 20 70 61 67 65 73 20   overflow pages 
30b0: 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 2e 0a  work correctly..
30c0: 23 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  #.do_test btree-
30d0: 38 2e 31 20 7b 0a 20 20 73 65 74 20 64 61 74 61  8.1 {.  set data
30e0: 20 22 2a 2a 2a 20 54 68 69 73 20 69 73 20 61 20   "*** This is a 
30f0: 76 65 72 79 20 6c 6f 6e 67 20 6b 65 79 20 22 0a  very long key ".
3100: 20 20 77 68 69 6c 65 20 7b 5b 73 74 72 69 6e 67    while {[string
3110: 20 6c 65 6e 67 74 68 20 24 64 61 74 61 5d 3c 32   length $data]<2
3120: 35 36 7d 20 7b 61 70 70 65 6e 64 20 64 61 74 61  56} {append data
3130: 20 24 64 61 74 61 7d 0a 20 20 73 65 74 20 3a 3a   $data}.  set ::
3140: 64 61 74 61 20 24 64 61 74 61 0a 20 20 62 74 72  data $data.  btr
3150: 65 65 5f 69 6e 73 65 72 74 20 24 3a 3a 63 31 20  ee_insert $::c1 
3160: 30 32 30 20 24 64 61 74 61 0a 7d 20 7b 7d 0a 23  020 $data.} {}.#
3170: 62 74 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20  btree_page_dump 
3180: 24 3a 3a 62 31 20 32 0a 64 6f 5f 74 65 73 74 20  $::b1 2.do_test 
3190: 62 74 72 65 65 2d 38 2e 31 2e 31 20 7b 0a 20 20  btree-8.1.1 {.  
31a0: 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61  lindex [btree_pa
31b0: 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d  ger_stats $::b1]
31c0: 20 31 0a 7d 20 7b 32 7d 0a 23 62 74 72 65 65 5f   1.} {2}.#btree_
31d0: 70 61 67 65 72 5f 72 65 66 5f 64 75 6d 70 20 24  pager_ref_dump $
31e0: 3a 3a 62 31 0a 64 6f 5f 74 65 73 74 20 62 74 72  ::b1.do_test btr
31f0: 65 65 2d 38 2e 32 20 7b 0a 20 20 73 74 72 69 6e  ee-8.2 {.  strin
3200: 67 20 6c 65 6e 67 74 68 20 5b 62 74 72 65 65 5f  g length [btree_
3210: 64 61 74 61 20 24 3a 3a 63 31 5d 0a 7d 20 5b 73  data $::c1].} [s
3220: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a  tring length $::
3230: 64 61 74 61 5d 0a 64 6f 5f 74 65 73 74 20 62 74  data].do_test bt
3240: 72 65 65 2d 38 2e 33 20 7b 0a 20 20 62 74 72 65  ree-8.3 {.  btre
3250: 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 24  e_data $::c1.} $
3260: 3a 3a 64 61 74 61 0a 64 6f 5f 74 65 73 74 20 62  ::data.do_test b
3270: 74 72 65 65 2d 38 2e 34 20 7b 0a 20 20 62 74 72  tree-8.4 {.  btr
3280: 65 65 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31 0a  ee_delete $::c1.
3290: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  } {}.do_test btr
32a0: 65 65 2d 38 2e 34 2e 31 20 7b 0a 20 20 6c 69 6e  ee-8.4.1 {.  lin
32b0: 64 65 78 20 5b 62 74 72 65 65 5f 67 65 74 5f 6d  dex [btree_get_m
32c0: 65 74 61 20 24 3a 3a 62 31 5d 20 30 0a 7d 20 5b  eta $::b1] 0.} [
32d0: 65 78 70 72 20 7b 69 6e 74 28 28 5b 73 74 72 69  expr {int(([stri
32e0: 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a 64 61 74  ng length $::dat
32f0: 61 5d 2d 32 33 38 2b 31 30 31 39 29 2f 31 30 32  a]-238+1019)/102
3300: 30 29 7d 5d 0a 64 6f 5f 74 65 73 74 20 62 74 72  0)}].do_test btr
3310: 65 65 2d 38 2e 35 20 7b 0a 20 20 73 65 74 20 64  ee-8.5 {.  set d
3320: 61 74 61 20 22 2a 2a 2a 20 54 68 69 73 20 69 73  ata "*** This is
3330: 20 61 6e 20 65 76 65 6e 20 6c 6f 6e 67 65 72 20   an even longer 
3340: 6b 65 79 22 0a 20 20 77 68 69 6c 65 20 7b 5b 73  key".  while {[s
3350: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 64 61  tring length $da
3360: 74 61 5d 3c 32 30 30 30 7d 20 7b 61 70 70 65 6e  ta]<2000} {appen
3370: 64 20 64 61 74 61 20 24 64 61 74 61 7d 0a 20 20  d data $data}.  
3380: 73 65 74 20 3a 3a 64 61 74 61 20 24 64 61 74 61  set ::data $data
3390: 0a 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74 20  .  btree_insert 
33a0: 24 3a 3a 63 31 20 30 32 30 20 24 64 61 74 61 0a  $::c1 020 $data.
33b0: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  } {}.do_test btr
33c0: 65 65 2d 38 2e 36 20 7b 0a 20 20 73 74 72 69 6e  ee-8.6 {.  strin
33d0: 67 20 6c 65 6e 67 74 68 20 5b 62 74 72 65 65 5f  g length [btree_
33e0: 64 61 74 61 20 24 3a 3a 63 31 5d 0a 7d 20 5b 73  data $::c1].} [s
33f0: 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 3a 3a  tring length $::
3400: 64 61 74 61 5d 0a 64 6f 5f 74 65 73 74 20 62 74  data].do_test bt
3410: 72 65 65 2d 38 2e 37 20 7b 0a 20 20 62 74 72 65  ree-8.7 {.  btre
3420: 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 24  e_data $::c1.} $
3430: 3a 3a 64 61 74 61 0a 64 6f 5f 74 65 73 74 20 62  ::data.do_test b
3440: 74 72 65 65 2d 38 2e 38 20 7b 0a 20 20 62 74 72  tree-8.8 {.  btr
3450: 65 65 5f 63 6f 6d 6d 69 74 20 24 3a 3a 62 31 0a  ee_commit $::b1.
3460: 20 20 62 74 72 65 65 5f 64 61 74 61 20 24 3a 3a    btree_data $::
3470: 63 31 0a 7d 20 24 3a 3a 64 61 74 61 0a 64 6f 5f  c1.} $::data.do_
3480: 74 65 73 74 20 62 74 72 65 65 2d 38 2e 39 20 7b  test btree-8.9 {
3490: 0a 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 5f 63  .  btree_close_c
34a0: 75 72 73 6f 72 20 24 3a 3a 63 31 0a 20 20 62 74  ursor $::c1.  bt
34b0: 72 65 65 5f 63 6c 6f 73 65 20 24 3a 3a 62 31 0a  ree_close $::b1.
34c0: 20 20 73 65 74 20 3a 3a 62 31 20 5b 62 74 72 65    set ::b1 [btre
34d0: 65 5f 6f 70 65 6e 20 74 65 73 74 31 2e 62 74 5d  e_open test1.bt]
34e0: 0a 20 20 73 65 74 20 3a 3a 63 31 20 5b 62 74 72  .  set ::c1 [btr
34f0: 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31 20  ee_cursor $::b1 
3500: 32 20 31 5d 0a 20 20 62 74 72 65 65 5f 6d 6f 76  2 1].  btree_mov
3510: 65 5f 74 6f 20 24 3a 3a 63 31 20 30 32 30 0a 20  e_to $::c1 020. 
3520: 20 62 74 72 65 65 5f 64 61 74 61 20 24 3a 3a 63   btree_data $::c
3530: 31 0a 7d 20 24 3a 3a 64 61 74 61 0a 64 6f 5f 74  1.} $::data.do_t
3540: 65 73 74 20 62 74 72 65 65 2d 38 2e 31 30 20 7b  est btree-8.10 {
3550: 0a 20 20 62 74 72 65 65 5f 62 65 67 69 6e 5f 74  .  btree_begin_t
3560: 72 61 6e 73 61 63 74 69 6f 6e 20 24 3a 3a 62 31  ransaction $::b1
3570: 0a 20 20 62 74 72 65 65 5f 64 65 6c 65 74 65 20  .  btree_delete 
3580: 24 3a 3a 63 31 0a 7d 20 7b 7d 0a 64 6f 5f 74 65  $::c1.} {}.do_te
3590: 73 74 20 62 74 72 65 65 2d 38 2e 31 31 20 7b 0a  st btree-8.11 {.
35a0: 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f    lindex [btree_
35b0: 67 65 74 5f 6d 65 74 61 20 24 3a 3a 62 31 5d 20  get_meta $::b1] 
35c0: 30 0a 7d 20 5b 65 78 70 72 20 7b 69 6e 74 28 28  0.} [expr {int((
35d0: 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24  [string length $
35e0: 3a 3a 64 61 74 61 5d 2d 32 33 38 2b 31 30 31 39  ::data]-238+1019
35f0: 29 2f 31 30 32 30 29 7d 5d 0a 0a 23 20 4e 6f 77  )/1020)}]..# Now
3600: 20 63 68 65 63 6b 20 6f 75 74 20 6b 65 79 73 20   check out keys 
3610: 6f 6e 20 6f 76 65 72 66 6c 6f 77 20 70 61 67 65  on overflow page
3620: 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72  s..#.do_test btr
3630: 65 65 2d 38 2e 31 32 20 7b 0a 20 20 73 65 74 20  ee-8.12 {.  set 
3640: 3a 3a 6b 65 79 70 72 65 66 69 78 20 22 54 68 69  ::keyprefix "Thi
3650: 73 20 69 73 20 61 20 6c 6f 6e 67 20 70 72 65 66  s is a long pref
3660: 69 78 20 74 6f 20 61 20 6b 65 79 20 22 0a 20 20  ix to a key ".  
3670: 77 68 69 6c 65 20 7b 5b 73 74 72 69 6e 67 20 6c  while {[string l
3680: 65 6e 67 74 68 20 24 3a 3a 6b 65 79 70 72 65 66  ength $::keypref
3690: 69 78 5d 3c 32 35 36 7d 20 7b 61 70 70 65 6e 64  ix]<256} {append
36a0: 20 3a 3a 6b 65 79 70 72 65 66 69 78 20 24 3a 3a   ::keyprefix $::
36b0: 6b 65 79 70 72 65 66 69 78 7d 0a 20 20 62 74 72  keyprefix}.  btr
36c0: 65 65 5f 63 6c 6f 73 65 5f 63 75 72 73 6f 72 20  ee_close_cursor 
36d0: 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 64 72  $::c1.  btree_dr
36e0: 6f 70 5f 74 61 62 6c 65 20 24 3a 3a 62 31 20 32  op_table $::b1 2
36f0: 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65  .  lindex [btree
3700: 5f 67 65 74 5f 6d 65 74 61 20 24 3a 3a 62 31 5d  _get_meta $::b1]
3710: 20 30 0a 7d 20 7b 34 7d 0a 64 6f 5f 74 65 73 74   0.} {4}.do_test
3720: 20 62 74 72 65 65 2d 38 2e 31 32 2e 31 20 7b 0a   btree-8.12.1 {.
3730: 20 20 73 65 74 20 3a 3a 63 31 20 5b 62 74 72 65    set ::c1 [btre
3740: 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62 31 20 32  e_cursor $::b1 2
3750: 20 31 5d 0a 20 20 62 74 72 65 65 5f 69 6e 73 65   1].  btree_inse
3760: 72 74 20 24 3a 3a 63 31 20 24 7b 3a 3a 6b 65 79  rt $::c1 ${::key
3770: 70 72 65 66 69 78 7d 31 20 31 0a 20 20 62 74 72  prefix}1 1.  btr
3780: 65 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20  ee_data $::c1.} 
3790: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  {1}.do_test btre
37a0: 65 2d 38 2e 31 33 20 7b 0a 20 20 62 74 72 65 65  e-8.13 {.  btree
37b0: 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 24 7b 6b  _key $::c1.} ${k
37c0: 65 79 70 72 65 66 69 78 7d 31 0a 64 6f 5f 74 65  eyprefix}1.do_te
37d0: 73 74 20 62 74 72 65 65 2d 38 2e 31 34 20 7b 0a  st btree-8.14 {.
37e0: 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74 20 24    btree_insert $
37f0: 3a 3a 63 31 20 24 7b 3a 3a 6b 65 79 70 72 65 66  ::c1 ${::keypref
3800: 69 78 7d 32 20 32 0a 20 20 62 74 72 65 65 5f 69  ix}2 2.  btree_i
3810: 6e 73 65 72 74 20 24 3a 3a 63 31 20 24 7b 3a 3a  nsert $::c1 ${::
3820: 6b 65 79 70 72 65 66 69 78 7d 33 20 33 0a 20 20  keyprefix}3 3.  
3830: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
3840: 7d 20 24 7b 6b 65 79 70 72 65 66 69 78 7d 33 0a  } ${keyprefix}3.
3850: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 38 2e  do_test btree-8.
3860: 31 35 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76  15 {.  btree_mov
3870: 65 5f 74 6f 20 24 3a 3a 63 31 20 24 7b 3a 3a 6b  e_to $::c1 ${::k
3880: 65 79 70 72 65 66 69 78 7d 32 0a 20 20 62 74 72  eyprefix}2.  btr
3890: 65 65 5f 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20  ee_data $::c1.} 
38a0: 7b 32 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  {2}.do_test btre
38b0: 65 2d 38 2e 31 36 20 7b 0a 20 20 62 74 72 65 65  e-8.16 {.  btree
38c0: 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 24  _move_to $::c1 $
38d0: 7b 3a 3a 6b 65 79 70 72 65 66 69 78 7d 31 0a 20  {::keyprefix}1. 
38e0: 20 62 74 72 65 65 5f 64 61 74 61 20 24 3a 3a 63   btree_data $::c
38f0: 31 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  1.} {1}.do_test 
3900: 62 74 72 65 65 2d 38 2e 31 37 20 7b 0a 20 20 62  btree-8.17 {.  b
3910: 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a  tree_move_to $::
3920: 63 31 20 24 7b 3a 3a 6b 65 79 70 72 65 66 69 78  c1 ${::keyprefix
3930: 7d 33 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20  }3.  btree_data 
3940: 24 3a 3a 63 31 0a 7d 20 7b 33 7d 0a 64 6f 5f 74  $::c1.} {3}.do_t
3950: 65 73 74 20 62 74 72 65 65 2d 38 2e 31 38 20 7b  est btree-8.18 {
3960: 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65  .  lindex [btree
3970: 5f 67 65 74 5f 6d 65 74 61 20 24 3a 3a 62 31 5d  _get_meta $::b1]
3980: 20 30 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74   0.} {1}.do_test
3990: 20 62 74 72 65 65 2d 38 2e 31 39 20 7b 0a 20 20   btree-8.19 {.  
39a0: 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a  btree_move_to $:
39b0: 3a 63 31 20 24 7b 3a 3a 6b 65 79 70 72 65 66 69  :c1 ${::keyprefi
39c0: 78 7d 32 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  x}2.  btree_key 
39d0: 24 3a 3a 63 31 0a 7d 20 24 7b 3a 3a 6b 65 79 70  $::c1.} ${::keyp
39e0: 72 65 66 69 78 7d 32 0a 23 62 74 72 65 65 5f 70  refix}2.#btree_p
39f0: 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31 20 32  age_dump $::b1 2
3a00: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 38  .do_test btree-8
3a10: 2e 32 30 20 7b 0a 20 20 62 74 72 65 65 5f 64 65  .20 {.  btree_de
3a20: 6c 65 74 65 20 24 3a 3a 63 31 0a 20 20 62 74 72  lete $::c1.  btr
3a30: 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20  ee_next $::c1.  
3a40: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
3a50: 7d 20 24 7b 3a 3a 6b 65 79 70 72 65 66 69 78 7d  } ${::keyprefix}
3a60: 33 0a 23 62 74 72 65 65 5f 70 61 67 65 5f 64 75  3.#btree_page_du
3a70: 6d 70 20 24 3a 3a 62 31 20 32 0a 64 6f 5f 74 65  mp $::b1 2.do_te
3a80: 73 74 20 62 74 72 65 65 2d 38 2e 32 31 20 7b 0a  st btree-8.21 {.
3a90: 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f    lindex [btree_
3aa0: 67 65 74 5f 6d 65 74 61 20 24 3a 3a 62 31 5d 20  get_meta $::b1] 
3ab0: 30 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20  0.} {2}.do_test 
3ac0: 62 74 72 65 65 2d 38 2e 32 32 20 7b 0a 20 20 6c  btree-8.22 {.  l
3ad0: 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67  index [btree_pag
3ae0: 65 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20  er_stats $::b1] 
3af0: 31 0a 7d 20 7b 32 7d 0a 64 6f 5f 74 65 73 74 20  1.} {2}.do_test 
3b00: 62 74 72 65 65 2d 38 2e 32 33 20 7b 0a 20 20 62  btree-8.23 {.  b
3b10: 74 72 65 65 5f 63 6c 6f 73 65 5f 63 75 72 73 6f  tree_close_curso
3b20: 72 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f  r $::c1.  btree_
3b30: 64 72 6f 70 5f 74 61 62 6c 65 20 24 3a 3a 62 31  drop_table $::b1
3b40: 20 32 0a 20 20 73 65 74 20 3a 3a 63 31 20 5b 62   2.  set ::c1 [b
3b50: 74 72 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62  tree_cursor $::b
3b60: 31 20 32 20 31 5d 0a 20 20 6c 69 6e 64 65 78 20  1 2 1].  lindex 
3b70: 5b 62 74 72 65 65 5f 67 65 74 5f 6d 65 74 61 20  [btree_get_meta 
3b80: 24 3a 3a 62 31 5d 20 30 0a 7d 20 7b 34 7d 0a 64  $::b1] 0.} {4}.d
3b90: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 38 2e 32  o_test btree-8.2
3ba0: 34 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74  4 {.  lindex [bt
3bb0: 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20  ree_pager_stats 
3bc0: 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32 7d 0a 23  $::b1] 1.} {2}.#
3bd0: 62 74 72 65 65 5f 70 61 67 65 72 5f 72 65 66 5f  btree_pager_ref_
3be0: 64 75 6d 70 20 24 3a 3a 62 31 0a 0a 23 20 43 68  dump $::b1..# Ch
3bf0: 65 63 6b 20 70 61 67 65 20 73 70 6c 69 74 74 69  eck page splitti
3c00: 6e 67 20 6c 6f 67 69 63 0a 23 0a 64 6f 5f 74 65  ng logic.#.do_te
3c10: 73 74 20 62 74 72 65 65 2d 39 2e 31 20 7b 0a 20  st btree-9.1 {. 
3c20: 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
3c30: 24 69 3c 3d 31 39 7d 20 7b 69 6e 63 72 20 69 7d  $i<=19} {incr i}
3c40: 20 7b 0a 20 20 20 20 73 65 74 20 6b 65 79 20 5b   {.    set key [
3c50: 66 6f 72 6d 61 74 20 25 30 33 64 20 24 69 5d 0a  format %03d $i].
3c60: 20 20 20 20 73 65 74 20 64 61 74 61 20 22 2a 2a      set data "**
3c70: 2a 20 24 6b 65 79 20 2a 2a 2a 20 24 6b 65 79 20  * $key *** $key 
3c80: 2a 2a 2a 20 24 6b 65 79 20 2a 2a 2a 20 24 6b 65  *** $key *** $ke
3c90: 79 20 2a 2a 2a 22 0a 20 20 20 20 62 74 72 65 65  y ***".    btree
3ca0: 5f 69 6e 73 65 72 74 20 24 3a 3a 63 31 20 24 6b  _insert $::c1 $k
3cb0: 65 79 20 24 64 61 74 61 0a 20 20 7d 0a 7d 20 7b  ey $data.  }.} {
3cc0: 7d 0a 23 62 74 72 65 65 5f 74 72 65 65 5f 64 75  }.#btree_tree_du
3cd0: 6d 70 20 24 3a 3a 62 31 20 32 0a 23 62 74 72 65  mp $::b1 2.#btre
3ce0: 65 5f 70 61 67 65 72 5f 72 65 66 5f 64 75 6d 70  e_pager_ref_dump
3cf0: 20 24 3a 3a 62 31 0a 23 73 65 74 20 70 61 67 65   $::b1.#set page
3d00: 72 5f 72 65 66 69 6e 66 6f 5f 65 6e 61 62 6c 65  r_refinfo_enable
3d10: 20 31 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65   1.do_test btree
3d20: 2d 39 2e 32 20 7b 0a 20 20 62 74 72 65 65 5f 69  -9.2 {.  btree_i
3d30: 6e 73 65 72 74 20 24 3a 3a 63 31 20 30 32 30 20  nsert $::c1 020 
3d40: 7b 2a 2a 2a 20 30 32 30 20 2a 2a 2a 20 30 32 30  {*** 020 *** 020
3d50: 20 2a 2a 2a 20 30 32 30 20 2a 2a 2a 20 30 32 30   *** 020 *** 020
3d60: 20 2a 2a 2a 7d 0a 20 20 73 65 6c 65 63 74 5f 6b   ***}.  select_k
3d70: 65 79 73 20 24 3a 3a 63 31 0a 7d 20 7b 30 30 31  eys $::c1.} {001
3d80: 20 30 30 32 20 30 30 33 20 30 30 34 20 30 30 35   002 003 004 005
3d90: 20 30 30 36 20 30 30 37 20 30 30 38 20 30 30 39   006 007 008 009
3da0: 20 30 31 30 20 30 31 31 20 30 31 32 20 30 31 33   010 011 012 013
3db0: 20 30 31 34 20 30 31 35 20 30 31 36 20 30 31 37   014 015 016 017
3dc0: 20 30 31 38 20 30 31 39 20 30 32 30 7d 0a 23 62   018 019 020}.#b
3dd0: 74 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20 24  tree_page_dump $
3de0: 3a 3a 62 31 20 35 0a 23 62 74 72 65 65 5f 70 61  ::b1 5.#btree_pa
3df0: 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31 20 32 0a  ge_dump $::b1 2.
3e00: 23 62 74 72 65 65 5f 70 61 67 65 5f 64 75 6d 70  #btree_page_dump
3e10: 20 24 3a 3a 62 31 20 37 0a 23 62 74 72 65 65 5f   $::b1 7.#btree_
3e20: 70 61 67 65 72 5f 72 65 66 5f 64 75 6d 70 20 24  pager_ref_dump $
3e30: 3a 3a 62 31 0a 23 73 65 74 20 70 61 67 65 72 5f  ::b1.#set pager_
3e40: 72 65 66 69 6e 66 6f 5f 65 6e 61 62 6c 65 20 30  refinfo_enable 0
3e50: 0a 0a 23 20 54 68 65 20 70 72 65 76 69 6f 75 73  ..# The previous
3e60: 20 22 73 65 6c 65 63 74 5f 6b 65 79 73 22 20 63   "select_keys" c
3e70: 6f 6d 6d 61 6e 64 20 6c 65 66 74 20 74 68 65 20  ommand left the 
3e80: 63 75 72 73 6f 72 20 70 6f 69 6e 74 69 6e 67 20  cursor pointing 
3e90: 61 74 20 74 68 65 20 72 6f 6f 74 0a 23 20 70 61  at the root.# pa
3ea0: 67 65 2e 20 20 53 6f 20 74 68 65 72 65 20 73 68  ge.  So there sh
3eb0: 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 20 74 77 6f  ould only be two
3ec0: 20 70 61 67 65 73 20 63 68 65 63 6b 65 64 20 6f   pages checked o
3ed0: 75 74 2e 20 20 32 20 28 74 68 65 20 72 6f 6f 74  ut.  2 (the root
3ee0: 29 20 61 6e 64 0a 23 20 70 61 67 65 20 31 2e 0a  ) and.# page 1..
3ef0: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 39 2e  do_test btree-9.
3f00: 32 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b  2.1 {.  lindex [
3f10: 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74  btree_pager_stat
3f20: 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32 7d  s $::b1] 1.} {2}
3f30: 0a 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b  .for {set i 1} {
3f40: 24 69 3c 3d 32 30 7d 20 7b 69 6e 63 72 20 69 7d  $i<=20} {incr i}
3f50: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62 74 72   {.  do_test btr
3f60: 65 65 2d 39 2e 33 2e 24 69 2e 31 20 5b 73 75 62  ee-9.3.$i.1 [sub
3f70: 73 74 20 7b 0a 20 20 20 20 62 74 72 65 65 5f 6d  st {.    btree_m
3f80: 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 5b 66 6f  ove_to $::c1 [fo
3f90: 72 6d 61 74 20 25 30 33 64 20 24 69 5d 0a 20 20  rmat %03d $i].  
3fa0: 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63    btree_key $::c
3fb0: 31 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20 25  1.  }] [format %
3fc0: 30 33 64 20 24 69 5d 0a 20 20 64 6f 5f 74 65 73  03d $i].  do_tes
3fd0: 74 20 62 74 72 65 65 2d 39 2e 33 2e 24 69 2e 32  t btree-9.3.$i.2
3fe0: 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 62 74   [subst {.    bt
3ff0: 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63  ree_move_to $::c
4000: 31 20 5b 66 6f 72 6d 61 74 20 25 30 33 64 20 24  1 [format %03d $
4010: 69 5d 0a 20 20 20 20 73 74 72 69 6e 67 20 72 61  i].    string ra
4020: 6e 67 65 20 5c 5b 62 74 72 65 65 5f 64 61 74 61  nge \[btree_data
4030: 20 24 3a 3a 63 31 5c 5d 20 30 20 31 30 0a 20 20   $::c1\] 0 10.  
4040: 7d 5d 20 22 2a 2a 2a 20 5b 66 6f 72 6d 61 74 20  }] "*** [format 
4050: 25 30 33 64 20 24 69 5d 20 2a 2a 2a 22 0a 7d 0a  %03d $i] ***".}.
4060: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 39 2e  do_test btree-9.
4070: 34 2e 31 20 7b 0a 20 20 6c 69 6e 64 65 78 20 5b  4.1 {.  lindex [
4080: 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74  btree_pager_stat
4090: 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 33 7d  s $::b1] 1.} {3}
40a0: 0a 0a 23 20 43 68 65 63 6b 20 74 68 65 20 70 61  ..# Check the pa
40b0: 67 65 20 6a 6f 69 6e 69 6e 67 20 6c 6f 67 69 63  ge joining logic
40c0: 2e 0a 23 0a 23 62 74 72 65 65 5f 70 61 67 65 5f  ..#.#btree_page_
40d0: 64 75 6d 70 20 24 3a 3a 62 31 20 32 0a 23 62 74  dump $::b1 2.#bt
40e0: 72 65 65 5f 70 61 67 65 72 5f 72 65 66 5f 64 75  ree_pager_ref_du
40f0: 6d 70 20 24 3a 3a 62 31 0a 64 6f 5f 74 65 73 74  mp $::b1.do_test
4100: 20 62 74 72 65 65 2d 39 2e 34 2e 32 20 7b 0a 20   btree-9.4.2 {. 
4110: 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24   btree_move_to $
4120: 3a 3a 63 31 20 30 30 35 0a 20 20 62 74 72 65 65  ::c1 005.  btree
4130: 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31 0a 7d 20  _delete $::c1.} 
4140: 7b 7d 0a 23 62 74 72 65 65 5f 70 61 67 65 5f 64  {}.#btree_page_d
4150: 75 6d 70 20 24 3a 3a 62 31 20 32 0a 66 6f 72 20  ump $::b1 2.for 
4160: 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 3c 3d 31  {set i 1} {$i<=1
4170: 39 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20  9} {incr i} {.  
4180: 69 66 20 7b 24 69 3d 3d 35 7d 20 63 6f 6e 74 69  if {$i==5} conti
4190: 6e 75 65 0a 20 20 64 6f 5f 74 65 73 74 20 62 74  nue.  do_test bt
41a0: 72 65 65 2d 39 2e 35 2e 24 69 2e 31 20 5b 73 75  ree-9.5.$i.1 [su
41b0: 62 73 74 20 7b 0a 20 20 20 20 62 74 72 65 65 5f  bst {.    btree_
41c0: 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 5b 66  move_to $::c1 [f
41d0: 6f 72 6d 61 74 20 25 30 33 64 20 24 69 5d 0a 20  ormat %03d $i]. 
41e0: 20 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a     btree_key $::
41f0: 63 31 0a 20 20 7d 5d 20 5b 66 6f 72 6d 61 74 20  c1.  }] [format 
4200: 25 30 33 64 20 24 69 5d 0a 20 20 64 6f 5f 74 65  %03d $i].  do_te
4210: 73 74 20 62 74 72 65 65 2d 39 2e 35 2e 24 69 2e  st btree-9.5.$i.
4220: 32 20 5b 73 75 62 73 74 20 7b 0a 20 20 20 20 62  2 [subst {.    b
4230: 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a  tree_move_to $::
4240: 63 31 20 5b 66 6f 72 6d 61 74 20 25 30 33 64 20  c1 [format %03d 
4250: 24 69 5d 0a 20 20 20 20 73 74 72 69 6e 67 20 72  $i].    string r
4260: 61 6e 67 65 20 5c 5b 62 74 72 65 65 5f 64 61 74  ange \[btree_dat
4270: 61 20 24 3a 3a 63 31 5c 5d 20 30 20 31 30 0a 20  a $::c1\] 0 10. 
4280: 20 7d 5d 20 22 2a 2a 2a 20 5b 66 6f 72 6d 61 74   }] "*** [format
4290: 20 25 30 33 64 20 24 69 5d 20 2a 2a 2a 22 0a 7d   %03d $i] ***".}
42a0: 0a 23 62 74 72 65 65 5f 70 61 67 65 72 5f 72 65  .#btree_pager_re
42b0: 66 5f 64 75 6d 70 20 24 3a 3a 62 31 0a 64 6f 5f  f_dump $::b1.do_
42c0: 74 65 73 74 20 62 74 72 65 65 2d 39 2e 36 20 7b  test btree-9.6 {
42d0: 0a 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 5f 63  .  btree_close_c
42e0: 75 72 73 6f 72 20 24 3a 3a 63 31 0a 20 20 6c 69  ursor $::c1.  li
42f0: 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65  ndex [btree_page
4300: 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31  r_stats $::b1] 1
4310: 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62  .} {1}.do_test b
4320: 74 72 65 65 2d 39 2e 37 20 7b 0a 20 20 62 74 72  tree-9.7 {.  btr
4330: 65 65 5f 72 6f 6c 6c 62 61 63 6b 20 24 3a 3a 62  ee_rollback $::b
4340: 31 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72 65  1.  lindex [btre
4350: 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20 24 3a  e_pager_stats $:
4360: 3a 62 31 5d 20 31 0a 7d 20 7b 30 7d 0a 0a 23 20  :b1] 1.} {0}..# 
4370: 43 72 65 61 74 65 20 61 20 74 72 65 65 20 6f 66  Create a tree of
4380: 20 64 65 70 74 68 20 74 77 6f 2e 20 20 54 68 61   depth two.  Tha
4390: 74 20 69 73 2c 20 74 68 65 72 65 20 69 73 20 61  t is, there is a
43a0: 20 73 69 6e 67 6c 65 20 64 69 76 69 64 65 72 20   single divider 
43b0: 65 6e 74 72 79 0a 23 20 6f 6e 20 74 68 65 20 72  entry.# on the r
43c0: 6f 6f 74 20 70 61 67 65 73 20 61 6e 64 20 74 77  oot pages and tw
43d0: 6f 20 6c 65 61 66 20 70 61 67 65 73 2e 20 20 54  o leaf pages.  T
43e0: 68 65 6e 20 64 65 6c 65 74 65 20 74 68 65 20 64  hen delete the d
43f0: 69 76 69 64 65 72 20 65 6e 74 72 79 0a 23 20 73  ivider entry.# s
4400: 65 65 20 77 68 61 74 20 68 61 70 70 65 6e 73 2e  ee what happens.
4410: 0a 23 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  .#.do_test btree
4420: 2d 31 30 2e 31 20 7b 0a 20 20 62 74 72 65 65 5f  -10.1 {.  btree_
4430: 62 65 67 69 6e 5f 74 72 61 6e 73 61 63 74 69 6f  begin_transactio
4440: 6e 20 24 3a 3a 62 31 0a 20 20 62 74 72 65 65 5f  n $::b1.  btree_
4450: 64 72 6f 70 5f 74 61 62 6c 65 20 24 3a 3a 62 31  drop_table $::b1
4460: 20 32 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74 72   2.  lindex [btr
4470: 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20 24  ee_pager_stats $
4480: 3a 3a 62 31 5d 20 31 0a 7d 20 7b 31 7d 0a 64 6f  ::b1] 1.} {1}.do
4490: 5f 74 65 73 74 20 62 74 72 65 65 2d 31 30 2e 32  _test btree-10.2
44a0: 20 7b 0a 20 20 73 65 74 20 3a 3a 63 31 20 5b 62   {.  set ::c1 [b
44b0: 74 72 65 65 5f 63 75 72 73 6f 72 20 24 3a 3a 62  tree_cursor $::b
44c0: 31 20 32 20 31 5d 0a 20 20 6c 69 6e 64 65 78 20  1 2 1].  lindex 
44d0: 5b 62 74 72 65 65 5f 70 61 67 65 72 5f 73 74 61  [btree_pager_sta
44e0: 74 73 20 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 32  ts $::b1] 1.} {2
44f0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
4500: 31 30 2e 33 20 7b 0a 20 20 66 6f 72 20 7b 73 65  10.3 {.  for {se
4510: 74 20 69 20 31 7d 20 7b 24 69 3c 3d 32 30 7d 20  t i 1} {$i<=20} 
4520: 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 73  {incr i} {.    s
4530: 65 74 20 6b 65 79 20 5b 66 6f 72 6d 61 74 20 25  et key [format %
4540: 30 33 64 20 24 69 5d 0a 20 20 20 20 73 65 74 20  03d $i].    set 
4550: 64 61 74 61 20 22 2a 2a 2a 20 24 6b 65 79 20 2a  data "*** $key *
4560: 2a 2a 20 24 6b 65 79 20 2a 2a 2a 20 24 6b 65 79  ** $key *** $key
4570: 20 2a 2a 2a 20 24 6b 65 79 20 2a 2a 2a 22 0a 20   *** $key ***". 
4580: 20 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74 20     btree_insert 
4590: 24 3a 3a 63 31 20 24 6b 65 79 20 24 64 61 74 61  $::c1 $key $data
45a0: 0a 20 20 7d 0a 20 20 73 65 6c 65 63 74 5f 6b 65  .  }.  select_ke
45b0: 79 73 20 24 3a 3a 63 31 0a 7d 20 7b 30 30 31 20  ys $::c1.} {001 
45c0: 30 30 32 20 30 30 33 20 30 30 34 20 30 30 35 20  002 003 004 005 
45d0: 30 30 36 20 30 30 37 20 30 30 38 20 30 30 39 20  006 007 008 009 
45e0: 30 31 30 20 30 31 31 20 30 31 32 20 30 31 33 20  010 011 012 013 
45f0: 30 31 34 20 30 31 35 20 30 31 36 20 30 31 37 20  014 015 016 017 
4600: 30 31 38 20 30 31 39 20 30 32 30 7d 0a 23 62 74  018 019 020}.#bt
4610: 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a  ree_page_dump $:
4620: 3a 62 31 20 37 0a 23 62 74 72 65 65 5f 70 61 67  :b1 7.#btree_pag
4630: 65 5f 64 75 6d 70 20 24 3a 3a 62 31 20 32 0a 23  e_dump $::b1 2.#
4640: 62 74 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20  btree_page_dump 
4650: 24 3a 3a 62 31 20 36 0a 64 6f 5f 74 65 73 74 20  $::b1 6.do_test 
4660: 62 74 72 65 65 2d 31 30 2e 34 20 7b 0a 20 20 62  btree-10.4 {.  b
4670: 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a  tree_move_to $::
4680: 63 31 20 30 31 31 0a 20 20 62 74 72 65 65 5f 64  c1 011.  btree_d
4690: 65 6c 65 74 65 20 24 3a 3a 63 31 0a 20 20 73 65  elete $::c1.  se
46a0: 6c 65 63 74 5f 6b 65 79 73 20 24 3a 3a 63 31 0a  lect_keys $::c1.
46b0: 7d 20 7b 30 30 31 20 30 30 32 20 30 30 33 20 30  } {001 002 003 0
46c0: 30 34 20 30 30 35 20 30 30 36 20 30 30 37 20 30  04 005 006 007 0
46d0: 30 38 20 30 30 39 20 30 31 30 20 30 31 32 20 30  08 009 010 012 0
46e0: 31 33 20 30 31 34 20 30 31 35 20 30 31 36 20 30  13 014 015 016 0
46f0: 31 37 20 30 31 38 20 30 31 39 20 30 32 30 7d 0a  17 018 019 020}.
4700: 23 62 74 72 65 65 5f 74 72 65 65 5f 64 75 6d 70  #btree_tree_dump
4710: 20 24 3a 3a 62 31 20 32 0a 23 62 74 72 65 65 5f   $::b1 2.#btree_
4720: 70 61 67 65 72 5f 72 65 66 5f 64 75 6d 70 20 24  pager_ref_dump $
4730: 3a 3a 62 31 0a 66 6f 72 20 7b 73 65 74 20 69 20  ::b1.for {set i 
4740: 31 7d 20 7b 24 69 3c 3d 32 30 7d 20 7b 69 6e 63  1} {$i<=20} {inc
4750: 72 20 69 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74  r i} {.  do_test
4760: 20 62 74 72 65 65 2d 31 30 2e 35 2e 24 69 20 7b   btree-10.5.$i {
4770: 0a 20 20 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f  .    btree_move_
4780: 74 6f 20 24 3a 3a 63 31 20 5b 66 6f 72 6d 61 74  to $::c1 [format
4790: 20 25 30 33 64 20 24 69 5d 0a 20 20 20 20 6c 69   %03d $i].    li
47a0: 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65  ndex [btree_page
47b0: 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31  r_stats $::b1] 1
47c0: 0a 20 20 7d 20 7b 32 7d 0a 20 20 23 62 74 72 65  .  } {2}.  #btre
47d0: 65 5f 70 61 67 65 72 5f 72 65 66 5f 64 75 6d 70  e_pager_ref_dump
47e0: 20 24 3a 3a 62 31 0a 20 20 23 62 74 72 65 65 5f   $::b1.  #btree_
47f0: 74 72 65 65 5f 64 75 6d 70 20 24 3a 3a 62 31 20  tree_dump $::b1 
4800: 32 0a 7d 0a 0a 23 20 43 72 65 61 74 65 20 61 20  2.}..# Create a 
4810: 74 72 65 65 20 77 69 74 68 20 6c 6f 74 73 20 6d  tree with lots m
4820: 6f 72 65 20 70 61 67 65 73 0a 23 0a 63 61 74 63  ore pages.#.catc
4830: 68 20 7b 75 6e 73 65 74 20 3a 3a 64 61 74 61 7d  h {unset ::data}
4840: 0a 63 61 74 63 68 20 7b 75 6e 73 65 74 20 3a 3a  .catch {unset ::
4850: 6b 65 79 7d 0a 66 6f 72 20 7b 73 65 74 20 69 20  key}.for {set i 
4860: 32 31 7d 20 7b 24 69 3c 3d 31 30 30 30 7d 20 7b  21} {$i<=1000} {
4870: 69 6e 63 72 20 69 7d 20 7b 0a 20 20 64 6f 5f 74  incr i} {.  do_t
4880: 65 73 74 20 62 74 72 65 65 2d 31 31 2e 31 2e 24  est btree-11.1.$
4890: 69 2e 31 20 7b 0a 20 20 20 20 73 65 74 20 6b 65  i.1 {.    set ke
48a0: 79 20 5b 66 6f 72 6d 61 74 20 25 30 33 64 20 24  y [format %03d $
48b0: 69 5d 0a 20 20 20 20 73 65 74 20 3a 3a 64 61 74  i].    set ::dat
48c0: 61 20 22 2a 2a 2a 20 24 6b 65 79 20 2a 2a 2a 20  a "*** $key *** 
48d0: 24 6b 65 79 20 2a 2a 2a 20 24 6b 65 79 20 2a 2a  $key *** $key **
48e0: 2a 20 24 6b 65 79 20 2a 2a 2a 22 0a 20 20 20 20  * $key ***".    
48f0: 62 74 72 65 65 5f 69 6e 73 65 72 74 20 24 3a 3a  btree_insert $::
4900: 63 31 20 24 6b 65 79 20 24 64 61 74 61 0a 20 20  c1 $key $data.  
4910: 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63    btree_key $::c
4920: 31 0a 20 20 7d 20 5b 66 6f 72 6d 61 74 20 25 30  1.  } [format %0
4930: 33 64 20 24 69 5d 0a 20 20 64 6f 5f 74 65 73 74  3d $i].  do_test
4940: 20 62 74 72 65 65 2d 31 31 2e 31 2e 24 69 2e 32   btree-11.1.$i.2
4950: 20 7b 0a 20 20 20 20 62 74 72 65 65 5f 64 61 74   {.    btree_dat
4960: 61 20 24 3a 3a 63 31 0a 20 20 7d 20 24 3a 3a 64  a $::c1.  } $::d
4970: 61 74 61 0a 20 20 73 65 74 20 3a 3a 6b 65 79 20  ata.  set ::key 
4980: 5b 66 6f 72 6d 61 74 20 25 30 33 64 20 5b 65 78  [format %03d [ex
4990: 70 72 20 7b 24 69 2f 32 7d 5d 5d 0a 20 20 69 66  pr {$i/2}]].  if
49a0: 20 7b 24 3a 3a 6b 65 79 3d 3d 22 30 31 31 22 7d   {$::key=="011"}
49b0: 20 7b 73 65 74 20 3a 3a 6b 65 79 20 30 31 30 7d   {set ::key 010}
49c0: 0a 20 20 64 6f 5f 74 65 73 74 20 62 74 72 65 65  .  do_test btree
49d0: 2d 31 31 2e 31 2e 24 69 2e 33 20 7b 0a 20 20 20  -11.1.$i.3 {.   
49e0: 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24   btree_move_to $
49f0: 3a 3a 63 31 20 24 3a 3a 6b 65 79 0a 20 20 20 20  ::c1 $::key.    
4a00: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
4a10: 20 20 7d 20 24 3a 3a 6b 65 79 0a 7d 0a 63 61 74    } $::key.}.cat
4a20: 63 68 20 7b 75 6e 73 65 74 20 3a 3a 64 61 74 61  ch {unset ::data
4a30: 7d 0a 63 61 74 63 68 20 7b 75 6e 73 65 74 20 3a  }.catch {unset :
4a40: 3a 6b 65 79 7d 0a 0a 23 20 4d 61 6b 65 20 73 75  :key}..# Make su
4a50: 72 65 20 6f 75 72 20 72 65 66 65 72 65 6e 63 65  re our reference
4a60: 20 63 6f 75 6e 74 20 69 73 20 73 74 69 6c 6c 20   count is still 
4a70: 63 6f 72 72 65 63 74 2e 0a 23 0a 64 6f 5f 74 65  correct..#.do_te
4a80: 73 74 20 62 74 72 65 65 2d 31 31 2e 32 20 7b 0a  st btree-11.2 {.
4a90: 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 5f 63 75    btree_close_cu
4aa0: 72 73 6f 72 20 24 3a 3a 63 31 0a 20 20 6c 69 6e  rsor $::c1.  lin
4ab0: 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65 72  dex [btree_pager
4ac0: 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31 0a  _stats $::b1] 1.
4ad0: 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 74  } {1}.do_test bt
4ae0: 72 65 65 2d 31 31 2e 33 20 7b 0a 20 20 73 65 74  ree-11.3 {.  set
4af0: 20 3a 3a 63 31 20 5b 62 74 72 65 65 5f 63 75 72   ::c1 [btree_cur
4b00: 73 6f 72 20 24 3a 3a 62 31 20 32 20 31 5d 0a 20  sor $::b1 2 1]. 
4b10: 20 6c 69 6e 64 65 78 20 5b 62 74 72 65 65 5f 70   lindex [btree_p
4b20: 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 62 31  ager_stats $::b1
4b30: 5d 20 31 0a 7d 20 7b 32 7d 0a 23 62 74 72 65 65  ] 1.} {2}.#btree
4b40: 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a 3a 62 31  _page_dump $::b1
4b50: 20 32 0a 0a 23 20 44 65 6c 65 74 65 20 74 68 65   2..# Delete the
4b60: 20 64 69 76 69 64 65 72 73 20 6f 6e 20 74 68 65   dividers on the
4b70: 20 72 6f 6f 74 20 70 61 67 65 0a 23 0a 64 6f 5f   root page.#.do_
4b80: 74 65 73 74 20 62 74 72 65 65 2d 31 31 2e 34 20  test btree-11.4 
4b90: 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74  {.  btree_move_t
4ba0: 6f 20 24 3a 3a 63 31 20 32 35 37 0a 20 20 62 74  o $::c1 257.  bt
4bb0: 72 65 65 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31  ree_delete $::c1
4bc0: 0a 20 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a  .  btree_next $:
4bd0: 3a 63 31 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  :c1.  btree_key 
4be0: 24 3a 3a 63 31 0a 7d 20 7b 32 35 38 7d 0a 64 6f  $::c1.} {258}.do
4bf0: 5f 74 65 73 74 20 62 74 72 65 65 2d 31 31 2e 34  _test btree-11.4
4c00: 2e 31 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76  .1 {.  btree_mov
4c10: 65 5f 74 6f 20 24 3a 3a 63 31 20 32 35 36 0a 20  e_to $::c1 256. 
4c20: 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31   btree_key $::c1
4c30: 0a 7d 20 7b 32 35 36 7d 0a 64 6f 5f 74 65 73 74  .} {256}.do_test
4c40: 20 62 74 72 65 65 2d 31 31 2e 34 2e 32 20 7b 0a   btree-11.4.2 {.
4c50: 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20    btree_move_to 
4c60: 24 3a 3a 63 31 20 32 35 38 0a 20 20 62 74 72 65  $::c1 258.  btre
4c70: 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 32  e_key $::c1.} {2
4c80: 35 38 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65  58}.do_test btre
4c90: 65 2d 31 31 2e 34 2e 33 20 7b 0a 20 20 62 74 72  e-11.4.3 {.  btr
4ca0: 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31  ee_move_to $::c1
4cb0: 20 32 35 39 0a 20 20 62 74 72 65 65 5f 6b 65 79   259.  btree_key
4cc0: 20 24 3a 3a 63 31 0a 7d 20 7b 32 35 39 7d 0a 64   $::c1.} {259}.d
4cd0: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31 31 2e  o_test btree-11.
4ce0: 34 2e 34 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f  4.4 {.  btree_mo
4cf0: 76 65 5f 74 6f 20 24 3a 3a 63 31 20 32 35 37 0a  ve_to $::c1 257.
4d00: 20 20 73 65 74 20 6e 20 5b 62 74 72 65 65 5f 6b    set n [btree_k
4d10: 65 79 20 24 3a 3a 63 31 5d 0a 20 20 65 78 70 72  ey $::c1].  expr
4d20: 20 7b 24 6e 3d 3d 32 35 36 7c 7c 24 6e 3d 3d 32   {$n==256||$n==2
4d30: 35 38 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73  58}.} {1}.do_tes
4d40: 74 20 62 74 72 65 65 2d 31 31 2e 35 20 7b 0a 20  t btree-11.5 {. 
4d50: 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24   btree_move_to $
4d60: 3a 3a 63 31 20 35 31 33 0a 20 20 62 74 72 65 65  ::c1 513.  btree
4d70: 5f 64 65 6c 65 74 65 20 24 3a 3a 63 31 0a 20 20  _delete $::c1.  
4d80: 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31  btree_next $::c1
4d90: 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a  .  btree_key $::
4da0: 63 31 0a 7d 20 7b 35 31 34 7d 0a 64 6f 5f 74 65  c1.} {514}.do_te
4db0: 73 74 20 62 74 72 65 65 2d 31 31 2e 35 2e 31 20  st btree-11.5.1 
4dc0: 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74  {.  btree_move_t
4dd0: 6f 20 24 3a 3a 63 31 20 35 31 32 0a 20 20 62 74  o $::c1 512.  bt
4de0: 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20  ree_key $::c1.} 
4df0: 7b 35 31 32 7d 0a 64 6f 5f 74 65 73 74 20 62 74  {512}.do_test bt
4e00: 72 65 65 2d 31 31 2e 35 2e 32 20 7b 0a 20 20 62  ree-11.5.2 {.  b
4e10: 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a  tree_move_to $::
4e20: 63 31 20 35 31 34 0a 20 20 62 74 72 65 65 5f 6b  c1 514.  btree_k
4e30: 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 35 31 34 7d  ey $::c1.} {514}
4e40: 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31  .do_test btree-1
4e50: 31 2e 35 2e 33 20 7b 0a 20 20 62 74 72 65 65 5f  1.5.3 {.  btree_
4e60: 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 35 31  move_to $::c1 51
4e70: 35 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a  5.  btree_key $:
4e80: 3a 63 31 0a 7d 20 7b 35 31 35 7d 0a 64 6f 5f 74  :c1.} {515}.do_t
4e90: 65 73 74 20 62 74 72 65 65 2d 31 31 2e 35 2e 34  est btree-11.5.4
4ea0: 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f   {.  btree_move_
4eb0: 74 6f 20 24 3a 3a 63 31 20 35 31 33 0a 20 20 73  to $::c1 513.  s
4ec0: 65 74 20 6e 20 5b 62 74 72 65 65 5f 6b 65 79 20  et n [btree_key 
4ed0: 24 3a 3a 63 31 5d 0a 20 20 65 78 70 72 20 7b 24  $::c1].  expr {$
4ee0: 6e 3d 3d 35 31 32 7c 7c 24 6e 3d 3d 35 31 34 7d  n==512||$n==514}
4ef0: 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62  .} {1}.do_test b
4f00: 74 72 65 65 2d 31 31 2e 36 20 7b 0a 20 20 62 74  tree-11.6 {.  bt
4f10: 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63  ree_move_to $::c
4f20: 31 20 37 36 39 0a 20 20 62 74 72 65 65 5f 64 65  1 769.  btree_de
4f30: 6c 65 74 65 20 24 3a 3a 63 31 0a 20 20 62 74 72  lete $::c1.  btr
4f40: 65 65 5f 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20  ee_next $::c1.  
4f50: 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a  btree_key $::c1.
4f60: 7d 20 7b 37 37 30 7d 0a 64 6f 5f 74 65 73 74 20  } {770}.do_test 
4f70: 62 74 72 65 65 2d 31 31 2e 36 2e 31 20 7b 0a 20  btree-11.6.1 {. 
4f80: 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20 24   btree_move_to $
4f90: 3a 3a 63 31 20 37 36 38 0a 20 20 62 74 72 65 65  ::c1 768.  btree
4fa0: 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 37 36  _key $::c1.} {76
4fb0: 38 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65  8}.do_test btree
4fc0: 2d 31 31 2e 36 2e 32 20 7b 0a 20 20 62 74 72 65  -11.6.2 {.  btre
4fd0: 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20  e_move_to $::c1 
4fe0: 37 37 31 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  771.  btree_key 
4ff0: 24 3a 3a 63 31 0a 7d 20 7b 37 37 31 7d 0a 64 6f  $::c1.} {771}.do
5000: 5f 74 65 73 74 20 62 74 72 65 65 2d 31 31 2e 36  _test btree-11.6
5010: 2e 33 20 7b 0a 20 20 62 74 72 65 65 5f 6d 6f 76  .3 {.  btree_mov
5020: 65 5f 74 6f 20 24 3a 3a 63 31 20 37 37 30 0a 20  e_to $::c1 770. 
5030: 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a 63 31   btree_key $::c1
5040: 0a 7d 20 7b 37 37 30 7d 0a 64 6f 5f 74 65 73 74  .} {770}.do_test
5050: 20 62 74 72 65 65 2d 31 31 2e 36 2e 34 20 7b 0a   btree-11.6.4 {.
5060: 20 20 62 74 72 65 65 5f 6d 6f 76 65 5f 74 6f 20    btree_move_to 
5070: 24 3a 3a 63 31 20 37 36 39 0a 20 20 73 65 74 20  $::c1 769.  set 
5080: 6e 20 5b 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a  n [btree_key $::
5090: 63 31 5d 0a 20 20 65 78 70 72 20 7b 24 6e 3d 3d  c1].  expr {$n==
50a0: 37 36 38 7c 7c 24 6e 3d 3d 37 37 30 7d 0a 7d 20  768||$n==770}.} 
50b0: 7b 31 7d 0a 23 62 74 72 65 65 5f 70 61 67 65 5f  {1}.#btree_page_
50c0: 64 75 6d 70 20 24 3a 3a 62 31 20 32 0a 23 62 74  dump $::b1 2.#bt
50d0: 72 65 65 5f 70 61 67 65 5f 64 75 6d 70 20 24 3a  ree_page_dump $:
50e0: 3a 62 31 20 32 35 0a 0a 23 20 43 68 61 6e 67 65  :b1 25..# Change
50f0: 20 74 68 65 20 64 61 74 61 20 6f 6e 20 61 6e 20   the data on an 
5100: 69 6e 74 65 72 6d 65 64 69 61 74 65 20 6e 6f 64  intermediate nod
5110: 65 20 73 75 63 68 20 74 68 61 74 20 74 68 65 20  e such that the 
5120: 6e 6f 64 65 20 62 65 63 6f 6d 65 73 20 6f 76 65  node becomes ove
5130: 72 66 75 6c 6c 0a 23 20 61 6e 64 20 68 61 73 20  rfull.# and has 
5140: 74 6f 20 73 70 6c 69 74 2e 20 20 57 65 20 68 61  to split.  We ha
5150: 70 70 65 6e 20 74 6f 20 6b 6e 6f 77 20 74 68 61  ppen to know tha
5160: 74 20 69 6e 74 65 72 6d 65 64 69 61 74 65 20 6e  t intermediate n
5170: 6f 64 65 73 20 65 78 69 73 74 20 6f 6e 0a 23 20  odes exist on.# 
5180: 33 33 37 2c 20 34 30 31 20 61 6e 64 20 34 36 35  337, 401 and 465
5190: 20 62 79 20 74 68 65 20 62 74 72 65 65 5f 70 61   by the btree_pa
51a0: 67 65 5f 64 75 6d 70 73 20 61 62 6f 76 65 0a 23  ge_dumps above.#
51b0: 0a 63 61 74 63 68 20 7b 75 6e 73 65 74 20 3a 3a  .catch {unset ::
51c0: 64 61 74 61 7d 0a 73 65 74 20 3a 3a 64 61 74 61  data}.set ::data
51d0: 20 7b 54 68 69 73 20 69 73 20 67 6f 69 6e 67 20   {This is going 
51e0: 74 6f 20 62 65 20 61 20 76 65 72 79 20 6c 6f 6e  to be a very lon
51f0: 67 20 64 61 74 61 20 73 65 67 6d 65 6e 74 7d 0a  g data segment}.
5200: 61 70 70 65 6e 64 20 3a 3a 64 61 74 61 20 24 3a  append ::data $:
5210: 3a 64 61 74 61 0a 61 70 70 65 6e 64 20 3a 3a 64  :data.append ::d
5220: 61 74 61 20 24 3a 3a 64 61 74 61 0a 64 6f 5f 74  ata $::data.do_t
5230: 65 73 74 20 62 74 72 65 65 2d 31 32 2e 31 20 7b  est btree-12.1 {
5240: 0a 20 20 62 74 72 65 65 5f 69 6e 73 65 72 74 20  .  btree_insert 
5250: 24 3a 3a 63 31 20 33 33 37 20 24 3a 3a 64 61 74  $::c1 337 $::dat
5260: 61 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20 24  a.  btree_data $
5270: 3a 3a 63 31 0a 7d 20 24 3a 3a 64 61 74 61 0a 64  ::c1.} $::data.d
5280: 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31 32 2e  o_test btree-12.
5290: 32 20 7b 0a 20 20 62 74 72 65 65 5f 69 6e 73 65  2 {.  btree_inse
52a0: 72 74 20 24 3a 3a 63 31 20 34 30 31 20 24 3a 3a  rt $::c1 401 $::
52b0: 64 61 74 61 0a 20 20 62 74 72 65 65 5f 64 61 74  data.  btree_dat
52c0: 61 20 24 3a 3a 63 31 0a 7d 20 24 3a 3a 64 61 74  a $::c1.} $::dat
52d0: 61 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  a.do_test btree-
52e0: 31 32 2e 33 20 7b 0a 20 20 62 74 72 65 65 5f 69  12.3 {.  btree_i
52f0: 6e 73 65 72 74 20 24 3a 3a 63 31 20 34 36 35 20  nsert $::c1 465 
5300: 24 3a 3a 64 61 74 61 0a 20 20 62 74 72 65 65 5f  $::data.  btree_
5310: 64 61 74 61 20 24 3a 3a 63 31 0a 7d 20 24 3a 3a  data $::c1.} $::
5320: 64 61 74 61 0a 64 6f 5f 74 65 73 74 20 62 74 72  data.do_test btr
5330: 65 65 2d 31 32 2e 34 20 7b 0a 20 20 62 74 72 65  ee-12.4 {.  btre
5340: 65 5f 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20  e_move_to $::c1 
5350: 33 33 37 0a 20 20 62 74 72 65 65 5f 6b 65 79 20  337.  btree_key 
5360: 24 3a 3a 63 31 0a 7d 20 7b 33 33 37 7d 0a 64 6f  $::c1.} {337}.do
5370: 5f 74 65 73 74 20 62 74 72 65 65 2d 31 32 2e 35  _test btree-12.5
5380: 20 7b 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20   {.  btree_data 
5390: 24 3a 3a 63 31 0a 7d 20 24 3a 3a 64 61 74 61 0a  $::c1.} $::data.
53a0: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31 32  do_test btree-12
53b0: 2e 36 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78  .6 {.  btree_nex
53c0: 74 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f  t $::c1.  btree_
53d0: 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 33 33 38  key $::c1.} {338
53e0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
53f0: 31 32 2e 37 20 7b 0a 20 20 62 74 72 65 65 5f 6d  12.7 {.  btree_m
5400: 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 34 36 34  ove_to $::c1 464
5410: 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a 3a  .  btree_key $::
5420: 63 31 0a 7d 20 7b 34 36 34 7d 0a 64 6f 5f 74 65  c1.} {464}.do_te
5430: 73 74 20 62 74 72 65 65 2d 31 32 2e 38 20 7b 0a  st btree-12.8 {.
5440: 20 20 62 74 72 65 65 5f 6e 65 78 74 20 24 3a 3a    btree_next $::
5450: 63 31 0a 20 20 62 74 72 65 65 5f 64 61 74 61 20  c1.  btree_data 
5460: 24 3a 3a 63 31 0a 7d 20 24 3a 3a 64 61 74 61 0a  $::c1.} $::data.
5470: 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d 31 32  do_test btree-12
5480: 2e 39 20 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78  .9 {.  btree_nex
5490: 74 20 24 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f  t $::c1.  btree_
54a0: 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b 34 36 36  key $::c1.} {466
54b0: 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  }.do_test btree-
54c0: 31 32 2e 31 30 20 7b 0a 20 20 62 74 72 65 65 5f  12.10 {.  btree_
54d0: 6d 6f 76 65 5f 74 6f 20 24 3a 3a 63 31 20 34 30  move_to $::c1 40
54e0: 30 0a 20 20 62 74 72 65 65 5f 6b 65 79 20 24 3a  0.  btree_key $:
54f0: 3a 63 31 0a 7d 20 7b 34 30 30 7d 0a 64 6f 5f 74  :c1.} {400}.do_t
5500: 65 73 74 20 62 74 72 65 65 2d 31 32 2e 31 31 20  est btree-12.11 
5510: 7b 0a 20 20 62 74 72 65 65 5f 6e 65 78 74 20 24  {.  btree_next $
5520: 3a 3a 63 31 0a 20 20 62 74 72 65 65 5f 64 61 74  ::c1.  btree_dat
5530: 61 20 24 3a 3a 63 31 0a 7d 20 24 3a 3a 64 61 74  a $::c1.} $::dat
5540: 61 0a 64 6f 5f 74 65 73 74 20 62 74 72 65 65 2d  a.do_test btree-
5550: 31 32 2e 31 32 20 7b 0a 20 20 62 74 72 65 65 5f  12.12 {.  btree_
5560: 6e 65 78 74 20 24 3a 3a 63 31 0a 20 20 62 74 72  next $::c1.  btr
5570: 65 65 5f 6b 65 79 20 24 3a 3a 63 31 0a 7d 20 7b  ee_key $::c1.} {
5580: 34 30 32 7d 0a 64 6f 5f 74 65 73 74 20 62 74 72  402}.do_test btr
5590: 65 65 2d 31 33 2e 31 20 7b 0a 20 20 62 74 72 65  ee-13.1 {.  btre
55a0: 65 5f 69 6e 74 65 67 72 69 74 79 5f 63 68 65 63  e_integrity_chec
55b0: 6b 20 24 3a 3a 62 31 20 32 20 33 0a 7d 20 7b 7d  k $::b1 2 3.} {}
55c0: 0a 0a 23 20 54 6f 20 44 6f 3a 0a 23 0a 23 20 20  ..# To Do:.#.#  
55d0: 20 31 2e 20 20 44 6f 20 73 6f 6d 65 20 64 65 6c   1.  Do some del
55e0: 65 74 65 73 20 66 72 6f 6d 20 74 68 65 20 33 2d  etes from the 3-
55f0: 6c 61 79 65 72 20 74 72 65 65 0a 23 20 20 20 32  layer tree.#   2
5600: 2e 20 20 43 6f 6d 6d 69 74 20 61 6e 64 20 72 65  .  Commit and re
5610: 6f 70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  open the databas
5620: 65 0a 23 20 20 20 33 2e 20 20 52 65 61 64 20 65  e.#   3.  Read e
5630: 76 65 72 79 20 31 35 74 68 20 65 6e 74 72 79 20  very 15th entry 
5640: 61 6e 64 20 6d 61 6b 65 20 73 75 72 65 20 69 74  and make sure it
5650: 20 77 6f 72 6b 73 0a 23 20 20 20 34 2e 20 20 49   works.#   4.  I
5660: 6d 70 6c 65 6d 65 6e 74 20 62 74 72 65 65 5f 73  mplement btree_s
5670: 61 6e 69 74 79 20 61 6e 64 20 70 75 74 20 69 74  anity and put it
5680: 20 74 68 72 6f 75 67 68 6f 75 74 20 74 68 69 73   throughout this
5690: 20 73 63 72 69 70 74 0a 23 0a 0a 64 6f 5f 74 65   script.#..do_te
56a0: 73 74 20 62 74 72 65 65 2d 31 35 2e 39 38 20 7b  st btree-15.98 {
56b0: 0a 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 5f 63  .  btree_close_c
56c0: 75 72 73 6f 72 20 24 3a 3a 63 31 0a 20 20 6c 69  ursor $::c1.  li
56d0: 6e 64 65 78 20 5b 62 74 72 65 65 5f 70 61 67 65  ndex [btree_page
56e0: 72 5f 73 74 61 74 73 20 24 3a 3a 62 31 5d 20 31  r_stats $::b1] 1
56f0: 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62  .} {1}.do_test b
5700: 74 72 65 65 2d 31 35 2e 39 39 20 7b 0a 20 20 62  tree-15.99 {.  b
5710: 74 72 65 65 5f 72 6f 6c 6c 62 61 63 6b 20 24 3a  tree_rollback $:
5720: 3a 62 31 0a 20 20 6c 69 6e 64 65 78 20 5b 62 74  :b1.  lindex [bt
5730: 72 65 65 5f 70 61 67 65 72 5f 73 74 61 74 73 20  ree_pager_stats 
5740: 24 3a 3a 62 31 5d 20 31 0a 7d 20 7b 30 7d 0a 62  $::b1] 1.} {0}.b
5750: 74 72 65 65 5f 70 61 67 65 72 5f 72 65 66 5f 64  tree_pager_ref_d
5760: 75 6d 70 20 24 3a 3a 62 31 0a 0a 64 6f 5f 74 65  ump $::b1..do_te
5770: 73 74 20 62 74 72 65 65 2d 39 39 2e 31 20 7b 0a  st btree-99.1 {.
5780: 20 20 62 74 72 65 65 5f 63 6c 6f 73 65 20 24 3a    btree_close $:
5790: 3a 62 31 0a 7d 20 7b 7d 0a 63 61 74 63 68 20 7b  :b1.} {}.catch {
57a0: 75 6e 73 65 74 20 64 61 74 61 7d 0a 63 61 74 63  unset data}.catc
57b0: 68 20 7b 75 6e 73 65 74 20 6b 65 79 7d 0a 0a 7d  h {unset key}..}
57c0: 20 3b 23 20 65 6e 64 20 69 66 28 20 6e 6f 74 20   ;# end if( not 
57d0: 6d 65 6d 3a 20 61 6e 64 20 68 61 73 20 70 61 67  mem: and has pag
57e0: 65 72 5f 6f 70 65 6e 20 63 6f 6d 6d 61 6e 64 20  er_open command 
57f0: 29 3b 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a  );..finish_test.