xref: /titanic_50/usr/src/lib/libsqlite/test/pager.test (revision c5c4113dfcabb1eed3d4bdf7609de5170027a794)
1*c5c4113dSnw141292
2*c5c4113dSnw141292#pragma ident	"%Z%%M%	%I%	%E% SMI"
3*c5c4113dSnw141292
4*c5c4113dSnw141292# 2001 September 15
5*c5c4113dSnw141292#
6*c5c4113dSnw141292# The author disclaims copyright to this source code.  In place of
7*c5c4113dSnw141292# a legal notice, here is a blessing:
8*c5c4113dSnw141292#
9*c5c4113dSnw141292#    May you do good and not evil.
10*c5c4113dSnw141292#    May you find forgiveness for yourself and forgive others.
11*c5c4113dSnw141292#    May you share freely, never taking more than you give.
12*c5c4113dSnw141292#
13*c5c4113dSnw141292#***********************************************************************
14*c5c4113dSnw141292# This file implements regression tests for SQLite library.  The
15*c5c4113dSnw141292# focus of this script is page cache subsystem.
16*c5c4113dSnw141292#
17*c5c4113dSnw141292# $Id: pager.test,v 1.14 2004/02/25 02:20:42 drh Exp $
18*c5c4113dSnw141292
19*c5c4113dSnw141292
20*c5c4113dSnw141292set testdir [file dirname $argv0]
21*c5c4113dSnw141292source $testdir/tester.tcl
22*c5c4113dSnw141292
23*c5c4113dSnw141292if {[info commands pager_open]!=""} {
24*c5c4113dSnw141292db close
25*c5c4113dSnw141292
26*c5c4113dSnw141292# Basic sanity check.  Open and close a pager.
27*c5c4113dSnw141292#
28*c5c4113dSnw141292do_test pager-1.0 {
29*c5c4113dSnw141292  catch {file delete -force ptf1.db}
30*c5c4113dSnw141292  catch {file delete -force ptf1.db-journal}
31*c5c4113dSnw141292  set v [catch {
32*c5c4113dSnw141292    set ::p1 [pager_open ptf1.db 10]
33*c5c4113dSnw141292  } msg]
34*c5c4113dSnw141292} {0}
35*c5c4113dSnw141292do_test pager-1.1 {
36*c5c4113dSnw141292  pager_stats $::p1
37*c5c4113dSnw141292} {ref 0 page 0 max 10 size -1 state 0 err 0 hit 0 miss 0 ovfl 0}
38*c5c4113dSnw141292do_test pager-1.2 {
39*c5c4113dSnw141292  pager_pagecount $::p1
40*c5c4113dSnw141292} {0}
41*c5c4113dSnw141292do_test pager-1.3 {
42*c5c4113dSnw141292  pager_stats $::p1
43*c5c4113dSnw141292} {ref 0 page 0 max 10 size -1 state 0 err 0 hit 0 miss 0 ovfl 0}
44*c5c4113dSnw141292do_test pager-1.4 {
45*c5c4113dSnw141292  pager_close $::p1
46*c5c4113dSnw141292} {}
47*c5c4113dSnw141292
48*c5c4113dSnw141292# Try to write a few pages.
49*c5c4113dSnw141292#
50*c5c4113dSnw141292do_test pager-2.1 {
51*c5c4113dSnw141292  set v [catch {
52*c5c4113dSnw141292    set ::p1 [pager_open ptf1.db 10]
53*c5c4113dSnw141292  } msg]
54*c5c4113dSnw141292} {0}
55*c5c4113dSnw141292#do_test pager-2.2 {
56*c5c4113dSnw141292#  set v [catch {
57*c5c4113dSnw141292#    set ::g1 [page_get $::p1 0]
58*c5c4113dSnw141292#  } msg]
59*c5c4113dSnw141292#  lappend v $msg
60*c5c4113dSnw141292#} {1 SQLITE_ERROR}
61*c5c4113dSnw141292do_test pager-2.3.1 {
62*c5c4113dSnw141292  set ::gx [page_lookup $::p1 1]
63*c5c4113dSnw141292} {}
64*c5c4113dSnw141292do_test pager-2.3.2 {
65*c5c4113dSnw141292  pager_stats $::p1
66*c5c4113dSnw141292} {ref 0 page 0 max 10 size -1 state 0 err 0 hit 0 miss 0 ovfl 0}
67*c5c4113dSnw141292do_test pager-2.3.3 {
68*c5c4113dSnw141292  set v [catch {
69*c5c4113dSnw141292    set ::g1 [page_get $::p1 1]
70*c5c4113dSnw141292  } msg]
71*c5c4113dSnw141292  if {$v} {lappend v $msg}
72*c5c4113dSnw141292  set v
73*c5c4113dSnw141292} {0}
74*c5c4113dSnw141292do_test pager-2.3.3 {
75*c5c4113dSnw141292  pager_stats $::p1
76*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 1 ovfl 0}
77*c5c4113dSnw141292do_test pager-2.3.4 {
78*c5c4113dSnw141292  set ::gx [page_lookup $::p1 1]
79*c5c4113dSnw141292  expr {$::gx!=""}
80*c5c4113dSnw141292} {1}
81*c5c4113dSnw141292do_test pager-2.3.5 {
82*c5c4113dSnw141292  pager_stats $::p1
83*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 1 ovfl 0}
84*c5c4113dSnw141292do_test pager-2.3.6 {
85*c5c4113dSnw141292  expr $::g1==$::gx
86*c5c4113dSnw141292} {1}
87*c5c4113dSnw141292do_test pager-2.3.7 {
88*c5c4113dSnw141292  page_unref $::gx
89*c5c4113dSnw141292  pager_stats $::p1
90*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 1 ovfl 0}
91*c5c4113dSnw141292do_test pager-2.4 {
92*c5c4113dSnw141292  pager_stats $::p1
93*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 1 ovfl 0}
94*c5c4113dSnw141292do_test pager-2.5 {
95*c5c4113dSnw141292  pager_pagecount $::p1
96*c5c4113dSnw141292} {0}
97*c5c4113dSnw141292do_test pager-2.6 {
98*c5c4113dSnw141292  pager_stats $::p1
99*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 1 ovfl 0}
100*c5c4113dSnw141292do_test pager-2.7 {
101*c5c4113dSnw141292  page_number $::g1
102*c5c4113dSnw141292} {1}
103*c5c4113dSnw141292do_test pager-2.8 {
104*c5c4113dSnw141292  page_read $::g1
105*c5c4113dSnw141292} {}
106*c5c4113dSnw141292do_test pager-2.9 {
107*c5c4113dSnw141292  page_unref $::g1
108*c5c4113dSnw141292} {}
109*c5c4113dSnw141292do_test pager-2.10 {
110*c5c4113dSnw141292  pager_stats $::p1
111*c5c4113dSnw141292} {ref 0 page 0 max 10 size -1 state 0 err 0 hit 0 miss 1 ovfl 0}
112*c5c4113dSnw141292do_test pager-2.11 {
113*c5c4113dSnw141292  set ::g1 [page_get $::p1 1]
114*c5c4113dSnw141292  expr {$::g1!=0}
115*c5c4113dSnw141292} {1}
116*c5c4113dSnw141292do_test pager-2.12 {
117*c5c4113dSnw141292  page_number $::g1
118*c5c4113dSnw141292} {1}
119*c5c4113dSnw141292do_test pager-2.13 {
120*c5c4113dSnw141292  pager_stats $::p1
121*c5c4113dSnw141292} {ref 1 page 1 max 10 size 0 state 1 err 0 hit 0 miss 2 ovfl 0}
122*c5c4113dSnw141292do_test pager-2.14 {
123*c5c4113dSnw141292  set v [catch {
124*c5c4113dSnw141292    page_write $::g1 "Page-One"
125*c5c4113dSnw141292  } msg]
126*c5c4113dSnw141292  lappend v $msg
127*c5c4113dSnw141292} {0 {}}
128*c5c4113dSnw141292do_test pager-2.15 {
129*c5c4113dSnw141292  pager_stats $::p1
130*c5c4113dSnw141292} {ref 1 page 1 max 10 size 1 state 2 err 0 hit 0 miss 2 ovfl 0}
131*c5c4113dSnw141292do_test pager-2.16 {
132*c5c4113dSnw141292  page_read $::g1
133*c5c4113dSnw141292} {Page-One}
134*c5c4113dSnw141292do_test pager-2.17 {
135*c5c4113dSnw141292  set v [catch {
136*c5c4113dSnw141292    pager_commit $::p1
137*c5c4113dSnw141292  } msg]
138*c5c4113dSnw141292  lappend v $msg
139*c5c4113dSnw141292} {0 {}}
140*c5c4113dSnw141292do_test pager-2.20 {
141*c5c4113dSnw141292  pager_stats $::p1
142*c5c4113dSnw141292} {ref 1 page 1 max 10 size -1 state 1 err 0 hit 0 miss 2 ovfl 0}
143*c5c4113dSnw141292do_test pager-2.19 {
144*c5c4113dSnw141292  pager_pagecount $::p1
145*c5c4113dSnw141292} {1}
146*c5c4113dSnw141292do_test pager-2.21 {
147*c5c4113dSnw141292  pager_stats $::p1
148*c5c4113dSnw141292} {ref 1 page 1 max 10 size 1 state 1 err 0 hit 0 miss 2 ovfl 0}
149*c5c4113dSnw141292do_test pager-2.22 {
150*c5c4113dSnw141292  page_unref $::g1
151*c5c4113dSnw141292} {}
152*c5c4113dSnw141292do_test pager-2.23 {
153*c5c4113dSnw141292  pager_stats $::p1
154*c5c4113dSnw141292} {ref 0 page 0 max 10 size -1 state 0 err 0 hit 0 miss 2 ovfl 0}
155*c5c4113dSnw141292do_test pager-2.24 {
156*c5c4113dSnw141292  set v [catch {
157*c5c4113dSnw141292    page_get $::p1 1
158*c5c4113dSnw141292  } ::g1]
159*c5c4113dSnw141292  if {$v} {lappend v $::g1}
160*c5c4113dSnw141292  set v
161*c5c4113dSnw141292} {0}
162*c5c4113dSnw141292do_test pager-2.25 {
163*c5c4113dSnw141292  page_read $::g1
164*c5c4113dSnw141292} {Page-One}
165*c5c4113dSnw141292do_test pager-2.26 {
166*c5c4113dSnw141292  set v [catch {
167*c5c4113dSnw141292    page_write $::g1 {page-one}
168*c5c4113dSnw141292  } msg]
169*c5c4113dSnw141292  lappend v $msg
170*c5c4113dSnw141292} {0 {}}
171*c5c4113dSnw141292do_test pager-2.27 {
172*c5c4113dSnw141292  page_read $::g1
173*c5c4113dSnw141292} {page-one}
174*c5c4113dSnw141292do_test pager-2.28 {
175*c5c4113dSnw141292  set v [catch {
176*c5c4113dSnw141292    pager_rollback $::p1
177*c5c4113dSnw141292  } msg]
178*c5c4113dSnw141292  lappend v $msg
179*c5c4113dSnw141292} {0 {}}
180*c5c4113dSnw141292do_test pager-2.29 {
181*c5c4113dSnw141292  page_unref $::g1
182*c5c4113dSnw141292  set ::g1 [page_get $::p1 1]
183*c5c4113dSnw141292  page_read $::g1
184*c5c4113dSnw141292} {Page-One}
185*c5c4113dSnw141292do_test pager-2.99 {
186*c5c4113dSnw141292  pager_close $::p1
187*c5c4113dSnw141292} {}
188*c5c4113dSnw141292
189*c5c4113dSnw141292do_test pager-3.1 {
190*c5c4113dSnw141292  set v [catch {
191*c5c4113dSnw141292    set ::p1 [pager_open ptf1.db 15]
192*c5c4113dSnw141292  } msg]
193*c5c4113dSnw141292  if {$v} {lappend v $msg}
194*c5c4113dSnw141292  set v
195*c5c4113dSnw141292} {0}
196*c5c4113dSnw141292do_test pager-3.2 {
197*c5c4113dSnw141292  pager_pagecount $::p1
198*c5c4113dSnw141292} {1}
199*c5c4113dSnw141292do_test pager-3.3 {
200*c5c4113dSnw141292  set v [catch {
201*c5c4113dSnw141292    set ::g(1) [page_get $::p1 1]
202*c5c4113dSnw141292  } msg]
203*c5c4113dSnw141292  if {$v} {lappend v $msg}
204*c5c4113dSnw141292  set v
205*c5c4113dSnw141292} {0}
206*c5c4113dSnw141292do_test pager-3.4 {
207*c5c4113dSnw141292  page_read $::g(1)
208*c5c4113dSnw141292} {Page-One}
209*c5c4113dSnw141292do_test pager-3.5 {
210*c5c4113dSnw141292  for {set i 2} {$i<=20} {incr i} {
211*c5c4113dSnw141292    set gx [page_get $::p1 $i]
212*c5c4113dSnw141292    page_write $gx "Page-$i"
213*c5c4113dSnw141292    page_unref $gx
214*c5c4113dSnw141292  }
215*c5c4113dSnw141292  pager_commit $::p1
216*c5c4113dSnw141292} {}
217*c5c4113dSnw141292for {set i 2} {$i<=20} {incr i} {
218*c5c4113dSnw141292  do_test pager-3.6.[expr {$i-1}] [subst {
219*c5c4113dSnw141292    set gx \[page_get $::p1 $i\]
220*c5c4113dSnw141292    set v \[page_read \$gx\]
221*c5c4113dSnw141292    page_unref \$gx
222*c5c4113dSnw141292    set v
223*c5c4113dSnw141292  }] "Page-$i"
224*c5c4113dSnw141292}
225*c5c4113dSnw141292for {set i 1} {$i<=20} {incr i} {
226*c5c4113dSnw141292  regsub -all CNT {
227*c5c4113dSnw141292    set ::g1 [page_get $::p1 CNT]
228*c5c4113dSnw141292    set ::g2 [page_get $::p1 CNT]
229*c5c4113dSnw141292    set ::vx [page_read $::g2]
230*c5c4113dSnw141292    expr {$::g1==$::g2}
231*c5c4113dSnw141292  } $i body;
232*c5c4113dSnw141292  do_test pager-3.7.$i.1 $body {1}
233*c5c4113dSnw141292  regsub -all CNT {
234*c5c4113dSnw141292    page_unref $::g2
235*c5c4113dSnw141292    set vy [page_read $::g1]
236*c5c4113dSnw141292    expr {$vy==$::vx}
237*c5c4113dSnw141292  } $i body;
238*c5c4113dSnw141292  do_test pager-3.7.$i.2 $body {1}
239*c5c4113dSnw141292  regsub -all CNT {
240*c5c4113dSnw141292    page_unref $::g1
241*c5c4113dSnw141292    set gx [page_get $::p1 CNT]
242*c5c4113dSnw141292    set vy [page_read $gx]
243*c5c4113dSnw141292    page_unref $gx
244*c5c4113dSnw141292    expr {$vy==$::vx}
245*c5c4113dSnw141292  } $i body;
246*c5c4113dSnw141292  do_test pager-3.7.$i.3 $body {1}
247*c5c4113dSnw141292}
248*c5c4113dSnw141292do_test pager-3.99 {
249*c5c4113dSnw141292  pager_close $::p1
250*c5c4113dSnw141292} {}
251*c5c4113dSnw141292
252*c5c4113dSnw141292# tests of the checkpoint mechanism and api
253*c5c4113dSnw141292#
254*c5c4113dSnw141292do_test pager-4.0 {
255*c5c4113dSnw141292  set v [catch {
256*c5c4113dSnw141292    file delete -force ptf1.db
257*c5c4113dSnw141292    set ::p1 [pager_open ptf1.db 15]
258*c5c4113dSnw141292  } msg]
259*c5c4113dSnw141292  if {$v} {lappend v $msg}
260*c5c4113dSnw141292  set v
261*c5c4113dSnw141292} {0}
262*c5c4113dSnw141292do_test pager-4.1 {
263*c5c4113dSnw141292  set g1 [page_get $::p1 1]
264*c5c4113dSnw141292  page_write $g1 "Page-1 v0"
265*c5c4113dSnw141292  for {set i 2} {$i<=20} {incr i} {
266*c5c4113dSnw141292    set gx [page_get $::p1 $i]
267*c5c4113dSnw141292    page_write $gx "Page-$i v0"
268*c5c4113dSnw141292    page_unref $gx
269*c5c4113dSnw141292  }
270*c5c4113dSnw141292  pager_commit $::p1
271*c5c4113dSnw141292} {}
272*c5c4113dSnw141292for {set i 1} {$i<=20} {incr i} {
273*c5c4113dSnw141292  do_test pager-4.2.$i {
274*c5c4113dSnw141292    set gx [page_get $p1 $i]
275*c5c4113dSnw141292    set v [page_read $gx]
276*c5c4113dSnw141292    page_unref $gx
277*c5c4113dSnw141292    set v
278*c5c4113dSnw141292  } "Page-$i v0"
279*c5c4113dSnw141292}
280*c5c4113dSnw141292do_test pager-4.3 {
281*c5c4113dSnw141292  lrange [pager_stats $::p1] 0 1
282*c5c4113dSnw141292} {ref 1}
283*c5c4113dSnw141292do_test pager-4.4 {
284*c5c4113dSnw141292  lrange [pager_stats $::p1] 8 9
285*c5c4113dSnw141292} {state 1}
286*c5c4113dSnw141292
287*c5c4113dSnw141292for {set i 1} {$i<20} {incr i} {
288*c5c4113dSnw141292  do_test pager-4.5.$i.0 {
289*c5c4113dSnw141292    set res {}
290*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
291*c5c4113dSnw141292      set gx [page_get $p1 $j]
292*c5c4113dSnw141292      set value [page_read $gx]
293*c5c4113dSnw141292      page_unref $gx
294*c5c4113dSnw141292      set shouldbe "Page-$j v[expr {$i-1}]"
295*c5c4113dSnw141292      if {$value!=$shouldbe} {
296*c5c4113dSnw141292        lappend res $value $shouldbe
297*c5c4113dSnw141292      }
298*c5c4113dSnw141292    }
299*c5c4113dSnw141292    set res
300*c5c4113dSnw141292  } {}
301*c5c4113dSnw141292  do_test pager-4.5.$i.1 {
302*c5c4113dSnw141292    page_write $g1 "Page-1 v$i"
303*c5c4113dSnw141292    lrange [pager_stats $p1] 8 9
304*c5c4113dSnw141292  } {state 2}
305*c5c4113dSnw141292  do_test pager-4.5.$i.2 {
306*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
307*c5c4113dSnw141292      set gx [page_get $p1 $j]
308*c5c4113dSnw141292      page_write $gx "Page-$j v$i"
309*c5c4113dSnw141292      page_unref $gx
310*c5c4113dSnw141292      if {$j==$i} {
311*c5c4113dSnw141292        pager_ckpt_begin $p1
312*c5c4113dSnw141292      }
313*c5c4113dSnw141292    }
314*c5c4113dSnw141292  } {}
315*c5c4113dSnw141292  do_test pager-4.5.$i.3 {
316*c5c4113dSnw141292    set res {}
317*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
318*c5c4113dSnw141292      set gx [page_get $p1 $j]
319*c5c4113dSnw141292      set value [page_read $gx]
320*c5c4113dSnw141292      page_unref $gx
321*c5c4113dSnw141292      set shouldbe "Page-$j v$i"
322*c5c4113dSnw141292      if {$value!=$shouldbe} {
323*c5c4113dSnw141292        lappend res $value $shouldbe
324*c5c4113dSnw141292      }
325*c5c4113dSnw141292    }
326*c5c4113dSnw141292    set res
327*c5c4113dSnw141292  } {}
328*c5c4113dSnw141292  do_test pager-4.5.$i.4 {
329*c5c4113dSnw141292    pager_rollback $p1
330*c5c4113dSnw141292    set res {}
331*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
332*c5c4113dSnw141292      set gx [page_get $p1 $j]
333*c5c4113dSnw141292      set value [page_read $gx]
334*c5c4113dSnw141292      page_unref $gx
335*c5c4113dSnw141292      set shouldbe "Page-$j v[expr {$i-1}]"
336*c5c4113dSnw141292      if {$value!=$shouldbe} {
337*c5c4113dSnw141292        lappend res $value $shouldbe
338*c5c4113dSnw141292      }
339*c5c4113dSnw141292    }
340*c5c4113dSnw141292    set res
341*c5c4113dSnw141292  } {}
342*c5c4113dSnw141292  do_test pager-4.5.$i.5 {
343*c5c4113dSnw141292    page_write $g1 "Page-1 v$i"
344*c5c4113dSnw141292    lrange [pager_stats $p1] 8 9
345*c5c4113dSnw141292  } {state 2}
346*c5c4113dSnw141292  do_test pager-4.5.$i.6 {
347*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
348*c5c4113dSnw141292      set gx [page_get $p1 $j]
349*c5c4113dSnw141292      page_write $gx "Page-$j v$i"
350*c5c4113dSnw141292      page_unref $gx
351*c5c4113dSnw141292      if {$j==$i} {
352*c5c4113dSnw141292        pager_ckpt_begin $p1
353*c5c4113dSnw141292      }
354*c5c4113dSnw141292    }
355*c5c4113dSnw141292  } {}
356*c5c4113dSnw141292  do_test pager-4.5.$i.7 {
357*c5c4113dSnw141292    pager_ckpt_rollback $p1
358*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
359*c5c4113dSnw141292      set gx [page_get $p1 $j]
360*c5c4113dSnw141292      set value [page_read $gx]
361*c5c4113dSnw141292      page_unref $gx
362*c5c4113dSnw141292      if {$j<=$i || $i==1} {
363*c5c4113dSnw141292        set shouldbe "Page-$j v$i"
364*c5c4113dSnw141292      } else {
365*c5c4113dSnw141292        set shouldbe "Page-$j v[expr {$i-1}]"
366*c5c4113dSnw141292      }
367*c5c4113dSnw141292      if {$value!=$shouldbe} {
368*c5c4113dSnw141292        lappend res $value $shouldbe
369*c5c4113dSnw141292      }
370*c5c4113dSnw141292    }
371*c5c4113dSnw141292    set res
372*c5c4113dSnw141292  } {}
373*c5c4113dSnw141292  do_test pager-4.5.$i.8 {
374*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
375*c5c4113dSnw141292      set gx [page_get $p1 $j]
376*c5c4113dSnw141292      page_write $gx "Page-$j v$i"
377*c5c4113dSnw141292      page_unref $gx
378*c5c4113dSnw141292      if {$j==$i} {
379*c5c4113dSnw141292        pager_ckpt_begin $p1
380*c5c4113dSnw141292      }
381*c5c4113dSnw141292    }
382*c5c4113dSnw141292  } {}
383*c5c4113dSnw141292  do_test pager-4.5.$i.9 {
384*c5c4113dSnw141292    pager_ckpt_commit $p1
385*c5c4113dSnw141292    for {set j 2} {$j<=20} {incr j} {
386*c5c4113dSnw141292      set gx [page_get $p1 $j]
387*c5c4113dSnw141292      set value [page_read $gx]
388*c5c4113dSnw141292      page_unref $gx
389*c5c4113dSnw141292      set shouldbe "Page-$j v$i"
390*c5c4113dSnw141292      if {$value!=$shouldbe} {
391*c5c4113dSnw141292        lappend res $value $shouldbe
392*c5c4113dSnw141292      }
393*c5c4113dSnw141292    }
394*c5c4113dSnw141292    set res
395*c5c4113dSnw141292  } {}
396*c5c4113dSnw141292  do_test pager-4.5.$i.10 {
397*c5c4113dSnw141292    pager_commit $p1
398*c5c4113dSnw141292    lrange [pager_stats $p1] 8 9
399*c5c4113dSnw141292  } {state 1}
400*c5c4113dSnw141292}
401*c5c4113dSnw141292
402*c5c4113dSnw141292do_test pager-4.99 {
403*c5c4113dSnw141292  pager_close $::p1
404*c5c4113dSnw141292} {}
405*c5c4113dSnw141292
406*c5c4113dSnw141292
407*c5c4113dSnw141292
408*c5c4113dSnw141292  file delete -force ptf1.db
409*c5c4113dSnw141292
410*c5c4113dSnw141292} ;# end if( not mem: and has pager_open command );
411*c5c4113dSnw141292
412*c5c4113dSnw141292# Ticket #615: an assertion fault inside the pager.  It is a benign
413*c5c4113dSnw141292# fault, but we might as well test for it.
414*c5c4113dSnw141292#
415*c5c4113dSnw141292do_test pager-5.1 {
416*c5c4113dSnw141292  sqlite db test.db
417*c5c4113dSnw141292  execsql {
418*c5c4113dSnw141292    BEGIN;
419*c5c4113dSnw141292    CREATE TABLE t1(x);
420*c5c4113dSnw141292    PRAGMA synchronous=off;
421*c5c4113dSnw141292    COMMIT;
422*c5c4113dSnw141292  }
423*c5c4113dSnw141292} {}
424*c5c4113dSnw141292
425*c5c4113dSnw141292
426*c5c4113dSnw141292finish_test
427