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