mirror of
https://github.com/sqlite/sqlite.git
synced 2025-09-02 12:21:26 +03:00
Modify test cases to account for the ZERO_DAMAGE change.
FossilOrigin-Name: 68684495f1a62a41ad27934f3a6d3bc9d290a57d
This commit is contained in:
@@ -76,7 +76,10 @@ do_catchsql_test 3.4 { INSERT INTO t1 VALUES(5, 6)} {1 {database is locked}}
|
||||
do_catchsql_test 3.5 { PRAGMA wal_checkpoint } {0 {1 -1 -1}}
|
||||
do_test 3.6 { unlock } {}
|
||||
|
||||
do_execsql_test 4.1 { PRAGMA wal_checkpoint } {0 2 2}
|
||||
# At this point the WAL file consists of a single frame only - written
|
||||
# by test case 3.1. If the ZERO_DAMAGE flag were not set, it would consist
|
||||
# of two frames - the frame written by 3.1 and a padding frame.
|
||||
do_execsql_test 4.1 { PRAGMA wal_checkpoint } {0 1 1}
|
||||
|
||||
do_test 4.2 { sqlite3demo_superlock unlock test.db } {unlock}
|
||||
do_catchsql_test 4.3 { SELECT * FROM t1 } {1 {database is locked}}
|
||||
|
@@ -1040,7 +1040,7 @@ 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 {
|
||||
@@ -1054,7 +1054,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}
|
||||
|
||||
@@ -1072,7 +1073,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
|
||||
|
||||
@@ -1082,7 +1083,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 }
|
||||
}
|
||||
@@ -1552,9 +1553,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
|
||||
|
@@ -361,7 +361,9 @@ do_test wal2-4.1 {
|
||||
INSERT INTO data VALUES('need xShmOpen to see this');
|
||||
PRAGMA wal_checkpoint;
|
||||
}
|
||||
} {wal 0 5 5}
|
||||
# Three pages in the WAL file at this point: One copy of page 1 and two
|
||||
# of the root page for table "data".
|
||||
} {wal 0 3 3}
|
||||
do_test wal2-4.2 {
|
||||
db close
|
||||
testvfs tvfs -noshm 1
|
||||
@@ -730,7 +732,7 @@ do_test wal2-6.5.1 {
|
||||
INSERT INTO t2 VALUES('I', 'II');
|
||||
PRAGMA journal_mode;
|
||||
}
|
||||
} {wal exclusive 0 3 3 wal}
|
||||
} {wal exclusive 0 2 2 wal}
|
||||
do_test wal2-6.5.2 {
|
||||
execsql {
|
||||
PRAGMA locking_mode = normal;
|
||||
@@ -741,7 +743,7 @@ do_test wal2-6.5.2 {
|
||||
} {normal exclusive I II III IV}
|
||||
do_test wal2-6.5.3 {
|
||||
execsql { PRAGMA wal_checkpoint }
|
||||
} {0 4 4}
|
||||
} {0 2 2}
|
||||
db close
|
||||
|
||||
proc lock_control {method filename handle spec} {
|
||||
@@ -1184,6 +1186,7 @@ foreach {tn sql reslist} {
|
||||
|
||||
execsql {PRAGMA auto_vacuum = 0}
|
||||
execsql $sql
|
||||
do_execsql_test wal2-14.$tn.0 { PRAGMA page_size = 4096 } {}
|
||||
do_execsql_test wal2-14.$tn.1 { PRAGMA journal_mode = WAL } {wal}
|
||||
|
||||
set sqlite_sync_count 0
|
||||
@@ -1199,7 +1202,7 @@ foreach {tn sql reslist} {
|
||||
INSERT INTO t1 VALUES(5, 6);
|
||||
COMMIT; -- 2 wal sync
|
||||
PRAGMA wal_checkpoint; -- 1 wal sync, 1 db sync
|
||||
} {10 0 5 5 0 2 2}
|
||||
} {10 0 3 3 0 1 1}
|
||||
|
||||
do_test wal2-14.$tn.3 {
|
||||
cond_incr_sync_count 1
|
||||
@@ -1261,6 +1264,7 @@ foreach {tn settings restart_sync commit_sync ckpt_sync} {
|
||||
|
||||
sqlite3 db test.db
|
||||
do_execsql_test 15.$tn.1 "
|
||||
PRAGMA page_size = 4096;
|
||||
CREATE TABLE t1(x);
|
||||
PRAGMA wal_autocheckpoint = OFF;
|
||||
PRAGMA journal_mode = WAL;
|
||||
@@ -1269,6 +1273,7 @@ foreach {tn settings restart_sync commit_sync ckpt_sync} {
|
||||
PRAGMA synchronous = [lindex $settings 2];
|
||||
" {0 wal}
|
||||
|
||||
if { $tn==2} breakpoint
|
||||
do_test 15.$tn.2 {
|
||||
set sync(normal) 0
|
||||
set sync(full) 0
|
||||
|
@@ -198,9 +198,9 @@ foreach {tn syncmode synccount} {
|
||||
1 off
|
||||
{}
|
||||
2 normal
|
||||
{test.db-wal normal test.db normal}
|
||||
{test.db-wal normal test.db-wal normal test.db normal}
|
||||
3 full
|
||||
{test.db-wal normal test.db-wal normal test.db-wal normal test.db normal}
|
||||
{test.db-wal normal test.db-wal normal test.db-wal normal test.db-wal normal test.db normal}
|
||||
} {
|
||||
|
||||
proc sync_counter {args} {
|
||||
@@ -429,7 +429,7 @@ do_test wal3-6.1.2 {
|
||||
} {o t t f}
|
||||
do_test wal3-6.1.3 {
|
||||
execsql { PRAGMA wal_checkpoint } db2
|
||||
} {0 7 7}
|
||||
} {0 4 4}
|
||||
|
||||
# At this point the log file has been fully checkpointed. However,
|
||||
# connection [db3] holds a lock that prevents the log from being wrapped.
|
||||
@@ -518,7 +518,7 @@ proc lock_callback {method file handle spec} {
|
||||
}
|
||||
do_test wal3-6.2.2 {
|
||||
execsql { PRAGMA wal_checkpoint }
|
||||
} {0 7 7}
|
||||
} {0 4 4}
|
||||
do_test wal3-6.2.3 {
|
||||
set ::R
|
||||
} {h h l b}
|
||||
@@ -628,7 +628,7 @@ do_test wal3-8.1 {
|
||||
INSERT INTO b VALUES('Markazi');
|
||||
PRAGMA wal_checkpoint;
|
||||
}
|
||||
} {wal 0 9 9}
|
||||
} {wal 0 5 5}
|
||||
do_test wal3-8.2 {
|
||||
execsql { SELECT * FROM b }
|
||||
} {Tehran Qom Markazi}
|
||||
|
@@ -197,9 +197,9 @@ foreach {testprefix do_wal_checkpoint} {
|
||||
INSERT INTO t2 VALUES(1, 2);
|
||||
}
|
||||
} {}
|
||||
do_test 2.2.$tn.2 { file_page_counts } {1 5 1 5}
|
||||
do_test 2.1.$tn.3 { code1 { do_wal_checkpoint db } } {0 5 5}
|
||||
do_test 2.1.$tn.4 { file_page_counts } {2 5 2 5}
|
||||
do_test 2.2.$tn.2 { file_page_counts } {1 3 1 3}
|
||||
do_test 2.1.$tn.3 { code1 { do_wal_checkpoint db } } {0 3 3}
|
||||
do_test 2.1.$tn.4 { file_page_counts } {2 3 2 3}
|
||||
}
|
||||
|
||||
do_multiclient_test tn {
|
||||
@@ -213,10 +213,10 @@ foreach {testprefix do_wal_checkpoint} {
|
||||
INSERT INTO t2 VALUES(3, 4);
|
||||
}
|
||||
} {}
|
||||
do_test 2.2.$tn.2 { file_page_counts } {1 5 1 7}
|
||||
do_test 2.2.$tn.2 { file_page_counts } {1 3 1 4}
|
||||
do_test 2.2.$tn.3 { sql2 { BEGIN; SELECT * FROM t1 } } {1 2}
|
||||
do_test 2.2.$tn.4 { code1 { do_wal_checkpoint db -mode restart } } {1 5 5}
|
||||
do_test 2.2.$tn.5 { file_page_counts } {2 5 2 7}
|
||||
do_test 2.2.$tn.4 { code1 { do_wal_checkpoint db -mode restart } } {1 3 3}
|
||||
do_test 2.2.$tn.5 { file_page_counts } {2 3 2 4}
|
||||
}
|
||||
|
||||
do_multiclient_test tn {
|
||||
@@ -229,13 +229,13 @@ foreach {testprefix do_wal_checkpoint} {
|
||||
INSERT INTO t2 VALUES(1, 2);
|
||||
}
|
||||
} {}
|
||||
do_test 2.3.$tn.2 { file_page_counts } {1 5 1 5}
|
||||
do_test 2.3.$tn.2 { file_page_counts } {1 3 1 3}
|
||||
do_test 2.3.$tn.3 { sql2 { BEGIN; SELECT * FROM t1 } } {1 2}
|
||||
do_test 2.3.$tn.4 { sql1 { INSERT INTO t1 VALUES(3, 4) } } {}
|
||||
do_test 2.3.$tn.5 { sql1 { INSERT INTO t2 VALUES(3, 4) } } {}
|
||||
do_test 2.3.$tn.6 { file_page_counts } {1 7 1 7}
|
||||
do_test 2.3.$tn.7 { code1 { do_wal_checkpoint db -mode full } } {1 7 5}
|
||||
do_test 2.3.$tn.8 { file_page_counts } {1 7 2 7}
|
||||
do_test 2.3.$tn.6 { file_page_counts } {1 4 1 4}
|
||||
do_test 2.3.$tn.7 { code1 { do_wal_checkpoint db -mode full } } {1 4 3}
|
||||
do_test 2.3.$tn.8 { file_page_counts } {1 4 2 4}
|
||||
}
|
||||
|
||||
# Check that checkpoints block on the correct locks. And respond correctly
|
||||
@@ -256,18 +256,18 @@ foreach {testprefix do_wal_checkpoint} {
|
||||
# processes holding all three types of locks.
|
||||
#
|
||||
foreach {tn1 checkpoint busy_on ckpt_expected expected} {
|
||||
1 PASSIVE - {0 5 5} -
|
||||
2 TYPO - {0 5 5} -
|
||||
1 PASSIVE - {0 3 3} -
|
||||
2 TYPO - {0 3 3} -
|
||||
|
||||
3 FULL - {0 7 7} 2
|
||||
4 FULL 1 {1 5 5} 1
|
||||
5 FULL 2 {1 7 5} 2
|
||||
6 FULL 3 {0 7 7} 2
|
||||
3 FULL - {0 4 4} 2
|
||||
4 FULL 1 {1 3 3} 1
|
||||
5 FULL 2 {1 4 3} 2
|
||||
6 FULL 3 {0 4 4} 2
|
||||
|
||||
7 RESTART - {0 7 7} 3
|
||||
8 RESTART 1 {1 5 5} 1
|
||||
9 RESTART 2 {1 7 5} 2
|
||||
10 RESTART 3 {1 7 7} 3
|
||||
7 RESTART - {0 4 4} 3
|
||||
8 RESTART 1 {1 3 3} 1
|
||||
9 RESTART 2 {1 4 3} 2
|
||||
10 RESTART 3 {1 4 4} 3
|
||||
|
||||
} {
|
||||
do_multiclient_test tn {
|
||||
|
Reference in New Issue
Block a user