Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add test cases to restore coverage of pager.c and wal.c. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
6cae552927392d8b735aa118c318d746 |
User & Date: | dan 2010-11-01 18:45:09.000 |
Context
2010-11-02
| ||
15:26 | Add evidence marks for the sqlite3_blob_reopen() interface. Fix compiler warnings in test1.c. Fix incorrect evidence marks on e_select.tcl. (check-in: 3771faa88e user: drh tags: trunk) | |
2010-11-01
| ||
18:45 | Add test cases to restore coverage of pager.c and wal.c. (check-in: 6cae552927 user: dan tags: trunk) | |
17:38 | If a database file with the WAL flag set is opened in exclusive-locking mode, use heap memory to store the wal-index instead of shared-memory. (check-in: 8dd5c69198 user: dan tags: trunk) | |
Changes
Changes to test/pager1.test.
︙ | ︙ | |||
2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 | do_test pager1-29.2 { execsql { PRAGMA page_size = 4096; VACUUM; } file size test.db } [expr 4096*3] finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 | do_test pager1-29.2 { execsql { PRAGMA page_size = 4096; VACUUM; } file size test.db } [expr 4096*3] #------------------------------------------------------------------------- # Test that if an empty database file (size 0 bytes) is opened in # exclusive-locking mode, any journal file is deleted from the file-system # without being rolled back. And that the RESERVED lock obtained while # doing this is not released. # do_test pager1-30.1 { db close file delete test.db file delete test.db-journal set fd [open test.db-journal w] seek $fd [expr 512+1032*2] puts -nonewline $fd x close $fd sqlite3 db test.db execsql { PRAGMA locking_mode=EXCLUSIVE; SELECT count(*) FROM sqlite_master; PRAGMA lock_status; } } {exclusive 0 main reserved temp closed} #------------------------------------------------------------------------- # Test that if the "page-size" field in a journal-header is 0, the journal # file can still be rolled back. This is required for backward compatibility - # versions of SQLite prior to 3.5.8 always set this field to zero. # do_test pager1-31.1 { faultsim_delete_and_reopen execsql { PRAGMA cache_size = 10; PRAGMA page_size = 1024; CREATE TABLE t1(x, y, UNIQUE(x, y)); INSERT INTO t1 VALUES(randomblob(1500), randomblob(1500)); INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; INSERT INTO t1 SELECT randomblob(1500), randomblob(1500) FROM t1; BEGIN; UPDATE t1 SET y = randomblob(1499); } file copy test.db test.db2 file copy test.db-journal test.db2-journal hexio_write test.db2-journal 24 00000000 sqlite3 db2 test.db2 execsql { PRAGMA integrity_check } db2 } {ok} finish_test |
Changes to test/walfault.test.
︙ | ︙ | |||
506 507 508 509 510 511 512 513 514 515 516 517 518 | PRAGMA locking_mode = exclusive; PRAGMA journal_mode = WAL; INSERT INTO abc VALUES(randomblob(1500)); } } -test { faultsim_test_result {0 {exclusive wal}} if {[file exists test.db-shm]} { error "Not using heap-memory mode" } faultsim_integrity_check set nRow [db eval {SELECT count(*) FROM abc}] if {!(($nRow==2 && $testrc) || $nRow==3)} { error "Bad db content" } } finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 | PRAGMA locking_mode = exclusive; PRAGMA journal_mode = WAL; INSERT INTO abc VALUES(randomblob(1500)); } } -test { faultsim_test_result {0 {exclusive wal}} if {[file exists test.db-shm]} { error "Not using heap-memory mode" } faultsim_integrity_check set nRow [db eval {SELECT count(*) FROM abc}] if {!(($nRow==2 && $testrc) || $nRow==3)} { error "Bad db content" } } #------------------------------------------------------------------------- # Test fault-handling when wrapping around to the start of a WAL file. # do_test walfault-14-pre { faultsim_delete_and_reopen execsql { PRAGMA journal_mode = WAL; BEGIN; CREATE TABLE abc(a PRIMARY KEY); INSERT INTO abc VALUES(randomblob(1500)); INSERT INTO abc VALUES(randomblob(1500)); COMMIT; } faultsim_save_and_close } {} do_faultsim_test walfault-14 -prep { faultsim_restore_and_reopen } -body { db eval { PRAGMA wal_checkpoint; INSERT INTO abc VALUES(randomblob(1500)); } } -test { faultsim_test_result {0 {}} faultsim_integrity_check set nRow [db eval {SELECT count(*) FROM abc}] if {!(($nRow==2 && $testrc) || $nRow==3)} { error "Bad db content" } } finish_test |
Changes to test/walnoshm.test.
︙ | ︙ | |||
136 137 138 139 140 141 142 143 | do_test 2.2.6 { db3 close db4 close execsql { SELECT * FROM t2 } db2 } {a b c d e f g h} db2 close | > > | > > > > > > | > > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | do_test 2.2.6 { db3 close db4 close execsql { SELECT * FROM t2 } db2 } {a b c d e f g h} db2 close db close #------------------------------------------------------------------------- # # 3.1: Test that if locking_mode=EXCLUSIVE is set after the wal file is # opened, it is possible to drop back to locking_mode=NORMAL. # # 3.2: Test that if locking_mode=EXCLUSIVE is set before the wal file is # opened, it is not. # do_test 3.1 { sqlite3 db test.db -vfs tvfsshm execsql { SELECT * FROM t1; PRAGMA locking_mode = EXCLUSIVE; INSERT INTO t1 VALUES(5, 6); PRAGMA locking_mode = NORMAL; INSERT INTO t1 VALUES(7, 8); } sqlite3 db2 test.db -vfs tvfsshm execsql { SELECT * FROM t1 } db2 } {1 2 3 4 5 6 7 8} db close db2 close do_test 3.2 { sqlite3 db test.db -vfs tvfsshm execsql { PRAGMA locking_mode = EXCLUSIVE; INSERT INTO t1 VALUES(9, 10); PRAGMA locking_mode = NORMAL; INSERT INTO t1 VALUES(11, 12); } sqlite3 db2 test.db -vfs tvfsshm catchsql { SELECT * FROM t1 } db2 } {1 {database is locked}} db close db2 close tvfs delete tvfsshm delete finish_test |