Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/sqlite/src/test/wal.test

Issue 949043002: Add //third_party/sqlite to dirs_to_snapshot, remove net_sql.patch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/sqlite/src/test/vtab_shared.test ('k') | third_party/sqlite/src/test/wal2.test » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/sqlite/src/test/wal.test
diff --git a/third_party/sqlite/src/test/wal.test b/third_party/sqlite/src/test/wal.test
index 1aa70e0525154568a542ab46bf655b043e0710b8..675be73791a7946c97f32de73dd154c8fb32ee2e 100644
--- a/third_party/sqlite/src/test/wal.test
+++ b/third_party/sqlite/src/test/wal.test
@@ -25,7 +25,7 @@ ifcapable !wal {finish_test ; return }
proc reopen_db {} {
catch { db close }
- file delete -force test.db test.db-wal test.db-wal-summary
+ forcedelete test.db test.db-wal test.db-wal-summary
sqlite3_wal db test.db
}
@@ -211,8 +211,8 @@ do_test wal-4.4.5 {
execsql { SELECT count(*) FROM t2 }
} {1}
do_test wal-4.4.6 {
- file copy -force test.db test2.db
- file copy -force test.db-wal test2.db-wal
+ forcecopy test.db test2.db
+ forcecopy test.db-wal test2.db-wal
sqlite3 db2 test2.db
execsql { SELECT count(*) FROM t2 ; SELECT count(*) FROM t1 } db2
} {1 2}
@@ -269,8 +269,8 @@ do_test wal-4.5.5 {
execsql { SELECT count(*) FROM t2 ; SELECT count(*) FROM t1 }
} {1 2}
do_test wal-4.5.6 {
- file copy -force test.db test2.db
- file copy -force test.db-wal test2.db-wal
+ forcecopy test.db test2.db
+ forcecopy test.db-wal test2.db-wal
sqlite3 db2 test2.db
execsql { SELECT count(*) FROM t2 ; SELECT count(*) FROM t1 } db2
} {1 2}
@@ -322,7 +322,7 @@ do_test wal-5.4 {
INSERT INTO t3 VALUES('abc');
}
catchsql { INSERT INTO t3 VALUES('abc') }
-} {1 {column x is not unique}}
+} {1 {UNIQUE constraint failed: t3.x}}
do_test wal-5.5 {
execsql {
COMMIT;
@@ -334,7 +334,7 @@ db close
foreach sector {512 4096} {
sqlite3_simulate_device -sectorsize $sector
foreach pgsz {512 1024 2048 4096} {
- file delete -force test.db test.db-wal
+ forcedelete test.db test.db-wal
do_test wal-6.$sector.$pgsz.1 {
sqlite3 db test.db -vfs devsym
execsql "
@@ -357,7 +357,7 @@ foreach sector {512 4096} {
}
do_test wal-7.1 {
- file delete -force test.db test.db-wal
+ forcedelete test.db test.db-wal
sqlite3_wal db test.db
execsql {
PRAGMA page_size = 1024;
@@ -377,7 +377,7 @@ do_test wal-7.2 {
do_test wal-8.1 {
reopen_db
catch { db close }
- file delete -force test.db test.db-wal
+ forcedelete test.db test.db-wal
sqlite3 db test.db
db function blob blob
@@ -416,6 +416,7 @@ do_test wal-8.3 {
do_test wal-9.1 {
reopen_db
execsql {
+ PRAGMA cache_size=2000;
CREATE TABLE t1(x PRIMARY KEY);
INSERT INTO t1 VALUES(blob(900));
INSERT INTO t1 VALUES(blob(900));
@@ -435,9 +436,9 @@ do_test wal-9.2 {
} {ok}
do_test wal-9.3 {
- file delete -force test2.db test2.db-wal
- file copy test.db test2.db
- file copy test.db-wal test2.db-wal
+ forcedelete test2.db test2.db-wal
+ copy_file test.db test2.db
+ copy_file test.db-wal test2.db-wal
sqlite3_wal db3 test2.db
execsql {PRAGMA integrity_check } db3
} {ok}
@@ -545,7 +546,7 @@ do_multiclient_test tn {
} {1 2 3 4 5 6 7 8 9 10}
do_test wal-10.$tn.12 {
catchsql { PRAGMA wal_checkpoint }
- } {0 {0 13 13}} ;# Reader no longer block checkpoints
+ } {0 {0 7 7}} ;# Reader no longer block checkpoints
do_test wal-10.$tn.13 {
execsql { INSERT INTO t1 VALUES(11, 12) }
sql2 {SELECT * FROM t1}
@@ -555,7 +556,7 @@ do_multiclient_test tn {
#
do_test wal-10.$tn.14 {
catchsql { PRAGMA wal_checkpoint }
- } {0 {0 15 13}}
+ } {0 {0 8 7}}
# The following series of test cases used to verify another blocking
# case in WAL - a case which no longer blocks.
@@ -565,10 +566,10 @@ do_multiclient_test tn {
} {1 2 3 4 5 6 7 8 9 10 11 12}
do_test wal-10.$tn.16 {
catchsql { PRAGMA wal_checkpoint }
- } {0 {0 15 15}}
+ } {0 {0 8 8}}
do_test wal-10.$tn.17 {
execsql { PRAGMA wal_checkpoint }
- } {0 15 15}
+ } {0 8 8}
do_test wal-10.$tn.18 {
sql3 { BEGIN; SELECT * FROM t1 }
} {1 2 3 4 5 6 7 8 9 10 11 12}
@@ -591,13 +592,13 @@ do_multiclient_test tn {
#
do_test wal-10.$tn.23 {
execsql { PRAGMA wal_checkpoint }
- } {0 17 17}
+ } {0 9 9}
do_test wal-10.$tn.24 {
sql2 { BEGIN; SELECT * FROM t1; }
} {1 2 3 4 5 6 7 8 9 10 11 12 13 14}
do_test wal-10.$tn.25 {
execsql { PRAGMA wal_checkpoint }
- } {0 17 17}
+ } {0 9 9}
do_test wal-10.$tn.26 {
catchsql { INSERT INTO t1 VALUES(15, 16) }
} {0 {}}
@@ -614,11 +615,11 @@ do_multiclient_test tn {
do_test wal-10.$tn.29 {
execsql { INSERT INTO t1 VALUES(19, 20) }
catchsql { PRAGMA wal_checkpoint }
- } {0 {0 6 0}}
+ } {0 {0 3 0}}
do_test wal-10.$tn.30 {
code3 { sqlite3_finalize $::STMT }
execsql { PRAGMA wal_checkpoint }
- } {0 6 0}
+ } {0 3 0}
# At one point, if a reader failed to upgrade to a writer because it
# was reading an old snapshot, the write-locks were not being released.
@@ -657,7 +658,7 @@ do_multiclient_test tn {
} {a b c d}
do_test wal-10.$tn.36 {
catchsql { PRAGMA wal_checkpoint }
- } {0 {0 16 16}}
+ } {0 {0 8 8}}
do_test wal-10.$tn.36 {
sql3 { INSERT INTO t1 VALUES('e', 'f') }
sql2 { SELECT * FROM t1 }
@@ -665,7 +666,7 @@ do_multiclient_test tn {
do_test wal-10.$tn.37 {
sql2 COMMIT
execsql { PRAGMA wal_checkpoint }
- } {0 18 18}
+ } {0 9 9}
}
#-------------------------------------------------------------------------
@@ -726,6 +727,9 @@ do_test wal-11.9 {
list [expr [file size test.db]/1024] [log_deleted test.db-wal]
} {37 1}
sqlite3_wal db test.db
+set nWal 39
+if {[permutation]!="mmap"} {set nWal 37}
+ifcapable !mmap {set nWal 37}
do_test wal-11.10 {
execsql {
PRAGMA cache_size = 10;
@@ -734,7 +738,7 @@ do_test wal-11.10 {
SELECT count(*) FROM t1;
}
list [expr [file size test.db]/1024] [file size test.db-wal]
-} [list 37 [wal_file_size 37 1024]]
+} [list 37 [wal_file_size $nWal 1024]]
do_test wal-11.11 {
execsql {
SELECT count(*) FROM t1;
@@ -744,7 +748,7 @@ do_test wal-11.11 {
} {32 16}
do_test wal-11.12 {
list [expr [file size test.db]/1024] [file size test.db-wal]
-} [list 37 [wal_file_size 37 1024]]
+} [list 37 [wal_file_size $nWal 1024]]
do_test wal-11.13 {
execsql {
INSERT INTO t1 VALUES( blob(900) );
@@ -754,7 +758,7 @@ do_test wal-11.13 {
} {17 ok}
do_test wal-11.14 {
list [expr [file size test.db]/1024] [file size test.db-wal]
-} [list 37 [wal_file_size 37 1024]]
+} [list 37 [wal_file_size $nWal 1024]]
#-------------------------------------------------------------------------
@@ -786,8 +790,8 @@ do_test wal-12.3 {
list [expr [file size test.db]/1024] [expr [file size test.db-wal]/1044]
} {3 2}
do_test wal-12.4 {
- file copy -force test.db test2.db
- file copy -force test.db-wal test2.db-wal
+ forcecopy test.db test2.db
+ forcecopy test.db-wal test2.db-wal
sqlite3_wal db2 test2.db
execsql { SELECT * FROM t2 } db2
} {B 1}
@@ -804,8 +808,8 @@ do_test wal-12.5 {
execsql { SELECT * FROM t2 }
} {B 2}
do_test wal-12.6 {
- file copy -force test.db test2.db
- file copy -force test.db-wal test2.db-wal
+ forcecopy test.db test2.db
+ forcecopy test.db-wal test2.db-wal
sqlite3_wal db2 test2.db
execsql { SELECT * FROM t2 } db2
} {B 2}
@@ -848,7 +852,6 @@ do_test wal-13.1.2 {
sqlite3 db test.db
execsql { SELECT * FROM t2 }
} {B 2}
-breakpoint
do_test wal-13.1.3 {
db close
file exists test.db-wal
@@ -909,7 +912,7 @@ do_multiclient_test tn {
catch { db close }
catch { db2 close }
catch { db3 close }
-file delete -force test.db test.db-wal
+forcedelete test.db test.db-wal
sqlite3 db test.db
sqlite3 db2 test.db
do_test wal-14 {
@@ -947,7 +950,7 @@ catch { db2 close }
# The following block of tests - wal-15.* - focus on testing the
# implementation of the sqlite3_wal_checkpoint() interface.
#
-file delete -force test.db test.db-wal
+forcedelete test.db test.db-wal
sqlite3 db test.db
do_test wal-15.1 {
execsql {
@@ -1039,12 +1042,12 @@ foreach {tn ckpt_cmd ckpt_res ckpt_main ckpt_aux} {
5 {sqlite3_wal_checkpoint db aux} SQLITE_OK 0 1
6 {sqlite3_wal_checkpoint db temp} SQLITE_OK 0 0
7 {db eval "PRAGMA main.wal_checkpoint"} {0 10 10} 1 0
- 8 {db eval "PRAGMA aux.wal_checkpoint"} {0 16 16} 0 1
+ 8 {db eval "PRAGMA aux.wal_checkpoint"} {0 13 13} 0 1
9 {db eval "PRAGMA temp.wal_checkpoint"} {0 -1 -1} 0 0
} {
do_test wal-16.$tn.1 {
- file delete -force test2.db test2.db-wal test2.db-journal
- file delete -force test.db test.db-wal test.db-journal
+ forcedelete test2.db test2.db-wal test2.db-journal
+ forcedelete test.db test.db-wal test.db-journal
sqlite3 db test.db
execsql {
@@ -1053,7 +1056,8 @@ foreach {tn ckpt_cmd ckpt_res ckpt_main ckpt_aux} {
PRAGMA aux.auto_vacuum = 0;
PRAGMA main.journal_mode = WAL;
PRAGMA aux.journal_mode = WAL;
- PRAGMA synchronous = NORMAL;
+ PRAGMA main.synchronous = NORMAL;
+ PRAGMA aux.synchronous = NORMAL;
}
} {wal wal}
@@ -1071,7 +1075,7 @@ foreach {tn ckpt_cmd ckpt_res ckpt_main ckpt_aux} {
} [list [expr 1*1024] [wal_file_size 10 1024]]
do_test wal-16.$tn.3 {
list [file size test2.db] [file size test2.db-wal]
- } [list [expr 1*1024] [wal_file_size 16 1024]]
+ } [list [expr 1*1024] [wal_file_size 13 1024]]
do_test wal-16.$tn.4 [list eval $ckpt_cmd] $ckpt_res
@@ -1081,7 +1085,7 @@ foreach {tn ckpt_cmd ckpt_res ckpt_main ckpt_aux} {
do_test wal-16.$tn.6 {
list [file size test2.db] [file size test2.db-wal]
- } [list [expr ($ckpt_aux ? 7 : 1)*1024] [wal_file_size 16 1024]]
+ } [list [expr ($ckpt_aux ? 7 : 1)*1024] [wal_file_size 13 1024]]
catch { db close }
}
@@ -1116,7 +1120,7 @@ foreach {tn sectorsize logsize} "
6 4096 [wal_file_size 176 512]
7 8192 [wal_file_size 184 512]
" {
- file delete -force test.db test.db-wal test.db-journal
+ forcedelete test.db test.db-wal test.db-journal
sqlite3_simulate_device -sectorsize $sectorsize
sqlite3 db test.db -vfs devsym
@@ -1124,6 +1128,7 @@ foreach {tn sectorsize logsize} "
execsql {
PRAGMA auto_vacuum = 0;
PRAGMA page_size = 512;
+ PRAGMA cache_size = -2000;
PRAGMA journal_mode = WAL;
PRAGMA synchronous = FULL;
}
@@ -1160,7 +1165,7 @@ sqlite3_test_control_pending_byte $old_pending_byte
# wal-18.2.* When the page-size field that occurs at the start of a log
# file is a power of 2 greater than 16384 or smaller than 512.
#
-file delete -force test.db test.db-wal test.db-journal
+forcedelete test.db test.db-wal test.db-journal
do_test wal-18.0 {
sqlite3 db test.db
execsql {
@@ -1178,8 +1183,8 @@ do_test wal-18.0 {
INSERT INTO t1 VALUES(5, 6); -- frames 5 and 6
}
- file copy -force test.db testX.db
- file copy -force test.db-wal testX.db-wal
+ forcecopy test.db testX.db
+ forcecopy test.db-wal testX.db-wal
db close
list [file size testX.db] [file size testX.db-wal]
} [list [expr 3*1024] [wal_file_size 6 1024]]
@@ -1195,8 +1200,8 @@ foreach {nFrame result} {
6 {0 0 1 2 3 4 5 6}
} {
do_test wal-18.1.$nFrame {
- file copy -force testX.db test.db
- file copy -force testX.db-wal test.db-wal
+ forcecopy testX.db test.db
+ forcecopy testX.db-wal test.db-wal
hexio_write test.db-wal [expr 24 + $nFrame*(24+1024) + 20] 00000000
@@ -1220,10 +1225,11 @@ proc logcksum {ckv1 ckv2 blob} {
upvar $ckv1 c1
upvar $ckv2 c2
- set scanpattern I*
- if {$::tcl_platform(byteOrder) eq "littleEndian"} {
- set scanpattern i*
- }
+ # Since the magic number at the start of the -wal file header is
+ # 931071618 that indicates that the content should always be read as
+ # little-endian.
+ #
+ set scanpattern i*
binary scan $blob $scanpattern values
foreach {v1 v2} $values {
@@ -1232,7 +1238,7 @@ proc logcksum {ckv1 ckv2 blob} {
}
}
-file copy -force test.db testX.db
+forcecopy test.db testX.db
foreach {tn pgsz works} {
1 128 0
2 256 0
@@ -1253,8 +1259,8 @@ foreach {tn pgsz works} {
}
for {set pg 1} {$pg <= 3} {incr pg} {
- file copy -force testX.db test.db
- file delete -force test.db-wal
+ forcecopy testX.db test.db
+ forcedelete test.db-wal
# Check that the database now exists and consists of three pages. And
# that there is no associated wal file.
@@ -1321,7 +1327,7 @@ foreach {tn pgsz works} {
# snapshot.
#
do_test wal-19.1 {
- file delete -force test.db test.db-wal test.db-journal
+ forcedelete test.db test.db-wal test.db-journal
sqlite3 db test.db
sqlite3 db2 test.db
execsql {
@@ -1370,7 +1376,7 @@ do_test wal-19.4 {
#
do_test wal-20.1 {
catch {db close}
- file delete -force test.db test.db-wal test.db-journal
+ forcedelete test.db test.db-wal test.db-journal
sqlite3 db test.db
execsql {
PRAGMA journal_mode = WAL;
@@ -1474,9 +1480,13 @@ foreach pgsz {512 1024 2048 4096 8192 16384 32768 65536} {
# Test that when 1 or more pages are recovered from a WAL file,
# sqlite3_log() is invoked to report this to the user.
#
-set walfile [file nativename [file join [pwd] test.db-wal]]
+ifcapable curdir {
+ set walfile [file nativename [file join [get_pwd] test.db-wal]]
+} else {
+ set walfile test.db-wal
+}
catch {db close}
-file delete -force test.db
+forcedelete test.db
do_test wal-23.1 {
faultsim_delete_and_reopen
execsql {
@@ -1501,10 +1511,10 @@ do_test wal-23.3 {
faultsim_restore_and_reopen
execsql { SELECT * FROM t1 }
} {1 2 3 4}
-set nPage [expr 2+$AUTOVACUUM]
do_test wal-23.4 {
set ::log
-} [list SQLITE_OK "Recovered $nPage frames from WAL file $walfile"]
+} [list SQLITE_NOTICE_RECOVER_WAL \
+ "recovered 2 frames from WAL file $walfile"]
ifcapable autovacuum {
@@ -1550,9 +1560,13 @@ ifcapable autovacuum {
}
file size test.db
} [expr 3 * 1024]
+
+ # WAL file now contains a single frame - the new root page for table t1.
+ # It would be two frames (the new root page and a padding frame) if the
+ # ZERO_DAMAGE flag were not set.
do_test 24.5 {
file size test.db-wal
- } 2128
+ } [wal_file_size 1 1024]
}
db close
@@ -1560,4 +1574,17 @@ sqlite3_shutdown
test_sqlite3_log
sqlite3_initialize
+# Make sure PRAGMA journal_mode=WAL works with ATTACHED databases in
+# all journal modes.
+#
+foreach mode {OFF MEMORY PERSIST DELETE TRUNCATE WAL} {
+ delete_file test.db test2.db
+ sqlite3 db test.db
+ do_test wal-25.$mode {
+ db eval "PRAGMA journal_mode=$mode"
+ db eval {ATTACH 'test2.db' AS t2; PRAGMA journal_mode=WAL;}
+ } {wal}
+ db close
+}
+
finish_test
« no previous file with comments | « third_party/sqlite/src/test/vtab_shared.test ('k') | third_party/sqlite/src/test/wal2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698