/ Hex Artifact Content
Login

Artifact 2317ccf5821f15a637b84fa5f4d36b4c85a52a12:


0000: 23 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20  # Copyright (c) 
0010: 31 39 39 39 2c 20 32 30 30 30 20 44 2e 20 52 69  1999, 2000 D. Ri
0020: 63 68 61 72 64 20 48 69 70 70 0a 23 0a 23 20 54  chard Hipp.#.# T
0030: 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66  his program is f
0040: 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f  ree software; yo
0050: 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75  u can redistribu
0060: 74 65 20 69 74 20 61 6e 64 2f 6f 72 0a 23 20 6d  te it and/or.# m
0070: 6f 64 69 66 79 20 69 74 20 75 6e 64 65 72 20 74  odify it under t
0080: 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20  he terms of the 
0090: 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c  GNU General Publ
00a0: 69 63 0a 23 20 4c 69 63 65 6e 73 65 20 61 73 20  ic.# License as 
00b0: 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 68 65  published by the
00c0: 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46   Free Software F
00d0: 6f 75 6e 64 61 74 69 6f 6e 3b 20 65 69 74 68 65  oundation; eithe
00e0: 72 0a 23 20 76 65 72 73 69 6f 6e 20 32 20 6f 66  r.# version 2 of
00f0: 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72   the License, or
0100: 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e   (at your option
0110: 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73  ) any later vers
0120: 69 6f 6e 2e 0a 23 0a 23 20 54 68 69 73 20 70 72  ion..#.# This pr
0130: 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62  ogram is distrib
0140: 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65  uted in the hope
0150: 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65   that it will be
0160: 20 75 73 65 66 75 6c 2c 0a 23 20 62 75 74 20 57   useful,.# but W
0170: 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41  ITHOUT ANY WARRA
0180: 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65  NTY; without eve
0190: 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61  n the implied wa
01a0: 72 72 61 6e 74 79 20 6f 66 0a 23 20 4d 45 52 43  rranty of.# MERC
01b0: 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46  HANTABILITY or F
01c0: 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52  ITNESS FOR A PAR
01d0: 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e  TICULAR PURPOSE.
01e0: 20 20 53 65 65 20 74 68 65 20 47 4e 55 0a 23 20    See the GNU.# 
01f0: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c  General Public L
0200: 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20  icense for more 
0210: 64 65 74 61 69 6c 73 2e 0a 23 20 0a 23 20 59 6f  details..# .# Yo
0220: 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65  u should have re
0230: 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66  ceived a copy of
0240: 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c   the GNU General
0250: 20 50 75 62 6c 69 63 0a 23 20 4c 69 63 65 6e 73   Public.# Licens
0260: 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69  e along with thi
0270: 73 20 6c 69 62 72 61 72 79 3b 20 69 66 20 6e 6f  s library; if no
0280: 74 2c 20 77 72 69 74 65 20 74 6f 20 74 68 65 0a  t, write to the.
0290: 23 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20  # Free Software 
02a0: 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e  Foundation, Inc.
02b0: 2c 20 35 39 20 54 65 6d 70 6c 65 20 50 6c 61 63  , 59 Temple Plac
02c0: 65 20 2d 20 53 75 69 74 65 20 33 33 30 2c 0a 23  e - Suite 330,.#
02d0: 20 42 6f 73 74 6f 6e 2c 20 4d 41 20 20 30 32 31   Boston, MA  021
02e0: 31 31 2d 31 33 30 37 2c 20 55 53 41 2e 0a 23 0a  11-1307, USA..#.
02f0: 23 20 41 75 74 68 6f 72 20 63 6f 6e 74 61 63 74  # Author contact
0300: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 23 20   information:.# 
0310: 20 20 64 72 68 40 68 77 61 63 69 2e 63 6f 6d 0a    drh@hwaci.com.
0320: 23 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 68  #   http://www.h
0330: 77 61 63 69 2e 63 6f 6d 2f 64 72 68 2f 0a 23 0a  waci.com/drh/.#.
0340: 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #***************
0350: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0360: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0370: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0380: 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20  ********.# This 
0390: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
03a0: 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73  regression tests
03b0: 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72   for SQLite libr
03c0: 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75  ary.  The.# focu
03d0: 73 20 6f 66 20 74 68 69 73 20 73 63 72 69 70 74  s of this script
03e0: 20 69 73 20 70 61 67 65 20 63 61 63 68 65 20 73   is page cache s
03f0: 75 62 73 79 73 74 65 6d 2e 0a 23 0a 23 20 24 49  ubsystem..#.# $I
0400: 64 3a 20 70 61 67 65 72 2e 74 65 73 74 2c 76 20  d: pager.test,v 
0410: 31 2e 31 20 32 30 30 31 2f 30 34 2f 31 35 20 30  1.1 2001/04/15 0
0420: 30 3a 33 37 3a 32 31 20 64 72 68 20 45 78 70 20  0:37:21 drh Exp 
0430: 24 0a 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20  $...set testdir 
0440: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61  [file dirname $a
0450: 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65  rgv0].source $te
0460: 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c  stdir/tester.tcl
0470: 0a 0a 69 66 20 7b 24 64 62 70 72 65 66 69 78 21  ..if {$dbprefix!
0480: 3d 22 6d 65 6d 3a 22 20 26 26 20 5b 69 6e 66 6f  ="mem:" && [info
0490: 20 63 6f 6d 6d 61 6e 64 73 20 70 61 67 65 72 5f   commands pager_
04a0: 6f 70 65 6e 5d 21 3d 22 22 7d 20 7b 0a 0a 23 20  open]!=""} {..# 
04b0: 42 61 73 69 63 20 73 61 6e 69 74 79 20 63 68 65  Basic sanity che
04c0: 63 6b 2e 20 20 4f 70 65 6e 20 61 6e 64 20 63 6c  ck.  Open and cl
04d0: 6f 73 65 20 61 20 70 61 67 65 72 2e 0a 23 0a 64  ose a pager..#.d
04e0: 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 31 2e 30  o_test pager-1.0
04f0: 20 7b 0a 20 20 63 61 74 63 68 20 7b 66 69 6c 65   {.  catch {file
0500: 20 64 65 6c 65 74 65 20 2d 66 6f 72 63 65 20 70   delete -force p
0510: 74 66 31 2e 64 62 7d 0a 20 20 63 61 74 63 68 20  tf1.db}.  catch 
0520: 7b 66 69 6c 65 20 64 65 6c 65 74 65 20 2d 66 6f  {file delete -fo
0530: 72 63 65 20 70 74 66 31 2e 64 62 2d 6a 6f 75 72  rce ptf1.db-jour
0540: 6e 61 6c 7d 0a 20 20 73 65 74 20 76 20 5b 63 61  nal}.  set v [ca
0550: 74 63 68 20 7b 0a 20 20 20 20 73 65 74 20 3a 3a  tch {.    set ::
0560: 70 31 20 5b 70 61 67 65 72 5f 6f 70 65 6e 20 70  p1 [pager_open p
0570: 74 66 31 2e 64 62 20 31 30 5d 0a 20 20 7d 20 6d  tf1.db 10].  } m
0580: 73 67 5d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73  sg].} {0}.do_tes
0590: 74 20 70 61 67 65 72 2d 31 2e 31 20 7b 0a 20 20  t pager-1.1 {.  
05a0: 70 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 70  pager_stats $::p
05b0: 31 0a 7d 20 7b 72 65 66 20 30 20 70 61 67 65 20  1.} {ref 0 page 
05c0: 30 20 6d 61 78 20 31 30 20 73 69 7a 65 20 2d 31  0 max 10 size -1
05d0: 20 73 74 61 74 65 20 30 20 65 72 72 20 30 20 68   state 0 err 0 h
05e0: 69 74 20 30 20 6d 69 73 73 20 30 20 6f 76 66 6c  it 0 miss 0 ovfl
05f0: 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67 65   0}.do_test page
0600: 72 2d 31 2e 32 20 7b 0a 20 20 70 61 67 65 72 5f  r-1.2 {.  pager_
0610: 70 61 67 65 63 6f 75 6e 74 20 24 3a 3a 70 31 0a  pagecount $::p1.
0620: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 61  } {0}.do_test pa
0630: 67 65 72 2d 31 2e 33 20 7b 0a 20 20 70 61 67 65  ger-1.3 {.  page
0640: 72 5f 73 74 61 74 73 20 24 3a 3a 70 31 0a 7d 20  r_stats $::p1.} 
0650: 7b 72 65 66 20 30 20 70 61 67 65 20 30 20 6d 61  {ref 0 page 0 ma
0660: 78 20 31 30 20 73 69 7a 65 20 2d 31 20 73 74 61  x 10 size -1 sta
0670: 74 65 20 30 20 65 72 72 20 30 20 68 69 74 20 30  te 0 err 0 hit 0
0680: 20 6d 69 73 73 20 30 20 6f 76 66 6c 20 30 7d 0a   miss 0 ovfl 0}.
0690: 64 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 31 2e  do_test pager-1.
06a0: 34 20 7b 0a 20 20 70 61 67 65 72 5f 63 6c 6f 73  4 {.  pager_clos
06b0: 65 20 24 3a 3a 70 31 0a 7d 20 7b 7d 0a 0a 23 20  e $::p1.} {}..# 
06c0: 54 72 79 20 74 6f 20 77 72 69 74 65 20 61 20 66  Try to write a f
06d0: 65 77 20 70 61 67 65 73 2e 0a 23 0a 64 6f 5f 74  ew pages..#.do_t
06e0: 65 73 74 20 70 61 67 65 72 2d 32 2e 31 20 7b 0a  est pager-2.1 {.
06f0: 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b    set v [catch {
0700: 0a 20 20 20 20 73 65 74 20 3a 3a 70 31 20 5b 70  .    set ::p1 [p
0710: 61 67 65 72 5f 6f 70 65 6e 20 70 74 66 31 2e 64  ager_open ptf1.d
0720: 62 20 31 30 5d 0a 20 20 7d 20 6d 73 67 5d 0a 7d  b 10].  } msg].}
0730: 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67   {0}.do_test pag
0740: 65 72 2d 32 2e 32 20 7b 0a 20 20 73 65 74 20 76  er-2.2 {.  set v
0750: 20 5b 63 61 74 63 68 20 7b 0a 20 20 20 20 73 65   [catch {.    se
0760: 74 20 3a 3a 67 31 20 5b 70 61 67 65 5f 67 65 74  t ::g1 [page_get
0770: 20 24 3a 3a 70 31 20 30 5d 0a 20 20 7d 20 6d 73   $::p1 0].  } ms
0780: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
0790: 6d 73 67 0a 7d 20 7b 31 20 53 51 4c 49 54 45 5f  msg.} {1 SQLITE_
07a0: 45 52 52 4f 52 7d 0a 64 6f 5f 74 65 73 74 20 70  ERROR}.do_test p
07b0: 61 67 65 72 2d 32 2e 33 20 7b 0a 20 20 73 65 74  ager-2.3 {.  set
07c0: 20 76 20 5b 63 61 74 63 68 20 7b 0a 20 20 20 20   v [catch {.    
07d0: 73 65 74 20 3a 3a 67 31 20 5b 70 61 67 65 5f 67  set ::g1 [page_g
07e0: 65 74 20 24 3a 3a 70 31 20 31 5d 0a 20 20 7d 20  et $::p1 1].  } 
07f0: 6d 73 67 5d 0a 20 20 69 66 20 7b 24 76 7d 20 7b  msg].  if {$v} {
0800: 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 7d 0a  lappend v $msg}.
0810: 20 20 73 65 74 20 76 0a 7d 20 7b 30 7d 0a 64 6f    set v.} {0}.do
0820: 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 34 20  _test pager-2.4 
0830: 7b 0a 20 20 70 61 67 65 72 5f 73 74 61 74 73 20  {.  pager_stats 
0840: 24 3a 3a 70 31 0a 7d 20 7b 72 65 66 20 31 20 70  $::p1.} {ref 1 p
0850: 61 67 65 20 31 20 6d 61 78 20 31 30 20 73 69 7a  age 1 max 10 siz
0860: 65 20 2d 31 20 73 74 61 74 65 20 31 20 65 72 72  e -1 state 1 err
0870: 20 30 20 68 69 74 20 30 20 6d 69 73 73 20 31 20   0 hit 0 miss 1 
0880: 6f 76 66 6c 20 30 7d 0a 64 6f 5f 74 65 73 74 20  ovfl 0}.do_test 
0890: 70 61 67 65 72 2d 32 2e 35 20 7b 0a 20 20 70 61  pager-2.5 {.  pa
08a0: 67 65 72 5f 70 61 67 65 63 6f 75 6e 74 20 24 3a  ger_pagecount $:
08b0: 3a 70 31 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73  :p1.} {0}.do_tes
08c0: 74 20 70 61 67 65 72 2d 32 2e 36 20 7b 0a 20 20  t pager-2.6 {.  
08d0: 70 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 70  pager_stats $::p
08e0: 31 0a 7d 20 7b 72 65 66 20 31 20 70 61 67 65 20  1.} {ref 1 page 
08f0: 31 20 6d 61 78 20 31 30 20 73 69 7a 65 20 30 20  1 max 10 size 0 
0900: 73 74 61 74 65 20 31 20 65 72 72 20 30 20 68 69  state 1 err 0 hi
0910: 74 20 30 20 6d 69 73 73 20 31 20 6f 76 66 6c 20  t 0 miss 1 ovfl 
0920: 30 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72  0}.do_test pager
0930: 2d 32 2e 37 20 7b 0a 20 20 70 61 67 65 5f 6e 75  -2.7 {.  page_nu
0940: 6d 62 65 72 20 24 3a 3a 67 31 0a 7d 20 7b 31 7d  mber $::g1.} {1}
0950: 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32  .do_test pager-2
0960: 2e 38 20 7b 0a 20 20 70 61 67 65 5f 72 65 61 64  .8 {.  page_read
0970: 20 24 3a 3a 67 31 0a 7d 20 7b 7d 0a 64 6f 5f 74   $::g1.} {}.do_t
0980: 65 73 74 20 70 61 67 65 72 2d 32 2e 39 20 7b 0a  est pager-2.9 {.
0990: 20 20 70 61 67 65 5f 75 6e 72 65 66 20 24 3a 3a    page_unref $::
09a0: 67 31 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20  g1.} {}.do_test 
09b0: 70 61 67 65 72 2d 32 2e 31 30 20 7b 0a 20 20 70  pager-2.10 {.  p
09c0: 61 67 65 72 5f 73 74 61 74 73 20 24 3a 3a 70 31  ager_stats $::p1
09d0: 0a 7d 20 7b 72 65 66 20 30 20 70 61 67 65 20 30  .} {ref 0 page 0
09e0: 20 6d 61 78 20 31 30 20 73 69 7a 65 20 2d 31 20   max 10 size -1 
09f0: 73 74 61 74 65 20 30 20 65 72 72 20 30 20 68 69  state 0 err 0 hi
0a00: 74 20 30 20 6d 69 73 73 20 31 20 6f 76 66 6c 20  t 0 miss 1 ovfl 
0a10: 30 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72  0}.do_test pager
0a20: 2d 32 2e 31 31 20 7b 0a 20 20 73 65 74 20 3a 3a  -2.11 {.  set ::
0a30: 67 31 20 5b 70 61 67 65 5f 67 65 74 20 24 3a 3a  g1 [page_get $::
0a40: 70 31 20 31 5d 0a 20 20 65 78 70 72 20 7b 24 3a  p1 1].  expr {$:
0a50: 3a 67 31 21 3d 30 7d 0a 7d 20 7b 31 7d 0a 64 6f  :g1!=0}.} {1}.do
0a60: 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 31 32  _test pager-2.12
0a70: 20 7b 0a 20 20 70 61 67 65 5f 6e 75 6d 62 65 72   {.  page_number
0a80: 20 24 3a 3a 67 31 0a 7d 20 7b 31 7d 0a 64 6f 5f   $::g1.} {1}.do_
0a90: 74 65 73 74 20 70 61 67 65 72 2d 32 2e 31 33 20  test pager-2.13 
0aa0: 7b 0a 20 20 70 61 67 65 72 5f 73 74 61 74 73 20  {.  pager_stats 
0ab0: 24 3a 3a 70 31 0a 7d 20 7b 72 65 66 20 31 20 70  $::p1.} {ref 1 p
0ac0: 61 67 65 20 31 20 6d 61 78 20 31 30 20 73 69 7a  age 1 max 10 siz
0ad0: 65 20 2d 31 20 73 74 61 74 65 20 31 20 65 72 72  e -1 state 1 err
0ae0: 20 30 20 68 69 74 20 30 20 6d 69 73 73 20 32 20   0 hit 0 miss 2 
0af0: 6f 76 66 6c 20 30 7d 0a 64 6f 5f 74 65 73 74 20  ovfl 0}.do_test 
0b00: 70 61 67 65 72 2d 32 2e 31 34 20 7b 0a 20 20 73  pager-2.14 {.  s
0b10: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 0a 20 20  et v [catch {.  
0b20: 20 20 70 61 67 65 5f 77 72 69 74 65 20 24 3a 3a    page_write $::
0b30: 67 31 20 22 50 61 67 65 2d 4f 6e 65 22 0a 20 20  g1 "Page-One".  
0b40: 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64  } msg].  lappend
0b50: 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d   v $msg.} {0 {}}
0b60: 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32  .do_test pager-2
0b70: 2e 31 35 20 7b 0a 20 20 70 61 67 65 72 5f 73 74  .15 {.  pager_st
0b80: 61 74 73 20 24 3a 3a 70 31 0a 7d 20 7b 72 65 66  ats $::p1.} {ref
0b90: 20 31 20 70 61 67 65 20 31 20 6d 61 78 20 31 30   1 page 1 max 10
0ba0: 20 73 69 7a 65 20 30 20 73 74 61 74 65 20 32 20   size 0 state 2 
0bb0: 65 72 72 20 30 20 68 69 74 20 30 20 6d 69 73 73  err 0 hit 0 miss
0bc0: 20 32 20 6f 76 66 6c 20 30 7d 0a 64 6f 5f 74 65   2 ovfl 0}.do_te
0bd0: 73 74 20 70 61 67 65 72 2d 32 2e 31 36 20 7b 0a  st pager-2.16 {.
0be0: 20 20 70 61 67 65 5f 72 65 61 64 20 24 3a 3a 67    page_read $::g
0bf0: 31 0a 7d 20 7b 50 61 67 65 2d 4f 6e 65 7d 0a 64  1.} {Page-One}.d
0c00: 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 31  o_test pager-2.1
0c10: 37 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  7 {.  set v [cat
0c20: 63 68 20 7b 0a 20 20 20 20 70 61 67 65 72 5f 63  ch {.    pager_c
0c30: 6f 6d 6d 69 74 20 24 3a 3a 70 31 0a 20 20 7d 20  ommit $::p1.  } 
0c40: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
0c50: 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64   $msg.} {0 {}}.d
0c60: 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 32  o_test pager-2.2
0c70: 30 20 7b 0a 20 20 70 61 67 65 72 5f 73 74 61 74  0 {.  pager_stat
0c80: 73 20 24 3a 3a 70 31 0a 7d 20 7b 72 65 66 20 31  s $::p1.} {ref 1
0c90: 20 70 61 67 65 20 31 20 6d 61 78 20 31 30 20 73   page 1 max 10 s
0ca0: 69 7a 65 20 2d 31 20 73 74 61 74 65 20 31 20 65  ize -1 state 1 e
0cb0: 72 72 20 30 20 68 69 74 20 30 20 6d 69 73 73 20  rr 0 hit 0 miss 
0cc0: 32 20 6f 76 66 6c 20 30 7d 0a 64 6f 5f 74 65 73  2 ovfl 0}.do_tes
0cd0: 74 20 70 61 67 65 72 2d 32 2e 31 39 20 7b 0a 20  t pager-2.19 {. 
0ce0: 20 70 61 67 65 72 5f 70 61 67 65 63 6f 75 6e 74   pager_pagecount
0cf0: 20 24 3a 3a 70 31 0a 7d 20 7b 31 7d 0a 64 6f 5f   $::p1.} {1}.do_
0d00: 74 65 73 74 20 70 61 67 65 72 2d 32 2e 32 31 20  test pager-2.21 
0d10: 7b 0a 20 20 70 61 67 65 72 5f 73 74 61 74 73 20  {.  pager_stats 
0d20: 24 3a 3a 70 31 0a 7d 20 7b 72 65 66 20 31 20 70  $::p1.} {ref 1 p
0d30: 61 67 65 20 31 20 6d 61 78 20 31 30 20 73 69 7a  age 1 max 10 siz
0d40: 65 20 31 20 73 74 61 74 65 20 31 20 65 72 72 20  e 1 state 1 err 
0d50: 30 20 68 69 74 20 30 20 6d 69 73 73 20 32 20 6f  0 hit 0 miss 2 o
0d60: 76 66 6c 20 30 7d 0a 64 6f 5f 74 65 73 74 20 70  vfl 0}.do_test p
0d70: 61 67 65 72 2d 32 2e 32 32 20 7b 0a 20 20 70 61  ager-2.22 {.  pa
0d80: 67 65 5f 75 6e 72 65 66 20 24 3a 3a 67 31 0a 7d  ge_unref $::g1.}
0d90: 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67 65   {}.do_test page
0da0: 72 2d 32 2e 32 33 20 7b 0a 20 20 70 61 67 65 72  r-2.23 {.  pager
0db0: 5f 73 74 61 74 73 20 24 3a 3a 70 31 0a 7d 20 7b  _stats $::p1.} {
0dc0: 72 65 66 20 30 20 70 61 67 65 20 30 20 6d 61 78  ref 0 page 0 max
0dd0: 20 31 30 20 73 69 7a 65 20 2d 31 20 73 74 61 74   10 size -1 stat
0de0: 65 20 30 20 65 72 72 20 30 20 68 69 74 20 30 20  e 0 err 0 hit 0 
0df0: 6d 69 73 73 20 32 20 6f 76 66 6c 20 30 7d 0a 64  miss 2 ovfl 0}.d
0e00: 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 32  o_test pager-2.2
0e10: 34 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  4 {.  set v [cat
0e20: 63 68 20 7b 0a 20 20 20 20 70 61 67 65 5f 67 65  ch {.    page_ge
0e30: 74 20 24 3a 3a 70 31 20 31 0a 20 20 7d 20 3a 3a  t $::p1 1.  } ::
0e40: 67 31 5d 0a 20 20 69 66 20 7b 24 76 7d 20 7b 6c  g1].  if {$v} {l
0e50: 61 70 70 65 6e 64 20 76 20 24 3a 3a 67 31 7d 0a  append v $::g1}.
0e60: 20 20 73 65 74 20 76 0a 7d 20 7b 30 7d 0a 64 6f    set v.} {0}.do
0e70: 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 32 35  _test pager-2.25
0e80: 20 7b 0a 20 20 70 61 67 65 5f 72 65 61 64 20 24   {.  page_read $
0e90: 3a 3a 67 31 0a 7d 20 7b 50 61 67 65 2d 4f 6e 65  ::g1.} {Page-One
0ea0: 7d 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72 2d  }.do_test pager-
0eb0: 32 2e 32 36 20 7b 0a 20 20 73 65 74 20 76 20 5b  2.26 {.  set v [
0ec0: 63 61 74 63 68 20 7b 0a 20 20 20 20 70 61 67 65  catch {.    page
0ed0: 5f 77 72 69 74 65 20 24 3a 3a 67 31 20 7b 70 61  _write $::g1 {pa
0ee0: 67 65 2d 6f 6e 65 7d 0a 20 20 7d 20 6d 73 67 5d  ge-one}.  } msg]
0ef0: 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73  .  lappend v $ms
0f00: 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  g.} {0 {}}.do_te
0f10: 73 74 20 70 61 67 65 72 2d 32 2e 32 37 20 7b 0a  st pager-2.27 {.
0f20: 20 20 70 61 67 65 5f 72 65 61 64 20 24 3a 3a 67    page_read $::g
0f30: 31 0a 7d 20 7b 70 61 67 65 2d 6f 6e 65 7d 0a 64  1.} {page-one}.d
0f40: 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32 2e 32  o_test pager-2.2
0f50: 38 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  8 {.  set v [cat
0f60: 63 68 20 7b 0a 20 20 20 20 70 61 67 65 72 5f 72  ch {.    pager_r
0f70: 6f 6c 6c 62 61 63 6b 20 24 3a 3a 70 31 0a 20 20  ollback $::p1.  
0f80: 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64  } msg].  lappend
0f90: 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d   v $msg.} {0 {}}
0fa0: 0a 64 6f 5f 74 65 73 74 20 70 61 67 65 72 2d 32  .do_test pager-2
0fb0: 2e 32 39 20 7b 0a 20 20 70 61 67 65 5f 72 65 61  .29 {.  page_rea
0fc0: 64 20 24 3a 3a 67 31 0a 7d 20 7b 50 61 67 65 2d  d $::g1.} {Page-
0fd0: 4f 6e 65 7d 0a 0a 64 6f 5f 74 65 73 74 20 70 61  One}..do_test pa
0fe0: 67 65 72 2d 32 2e 39 39 20 7b 0a 20 20 70 61 67  ger-2.99 {.  pag
0ff0: 65 72 5f 63 6c 6f 73 65 20 24 3a 3a 70 31 0a 7d  er_close $::p1.}
1000: 20 7b 7d 0a 0a 0a 7d 20 3b 23 20 65 6e 64 20 69   {}...} ;# end i
1010: 66 28 20 6e 6f 74 20 6d 65 6d 3a 20 61 6e 64 20  f( not mem: and 
1020: 68 61 73 20 70 61 67 65 72 5f 6f 70 65 6e 20 63  has pager_open c
1030: 6f 6d 6d 61 6e 64 20 29 3b 0a 0a 66 69 6e 69 73  ommand );..finis
1040: 68 5f 74 65 73 74 0a                             h_test.