1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00
Files
sqlite/test/cksumvfs.test
drh d14c3f15ff Turn redundant registrations of the cksumvfs extension from a stack
overflow into a harmless no-op.
[gugs:/info/2026-07-29T06:28:31Z|Bug 2026-07-29T06:28:31Z]

FossilOrigin-Name: d6453bc80e6e717813f2f5d4a40548cbc25e83e09c209793cacfddb94a408053
2026-07-29 17:08:52 +00:00

101 lines
1.9 KiB
Plaintext

# 2024 March 19
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#***********************************************************************
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
set testprefix cksumvfs
db close
sqlite3_shutdown
#test_sqlite3_log logfunc
sqlite3_initialize
proc logfunc {args} {
puts "LOG: $args"
}
do_test 0.1 {
sqlite3_register_cksumvfs
} {SQLITE_OK}
do_test 0.2 {
# Multiple registrations of cksumvfs are harmless. Bug 2026-07-29T06:28:31Z
sqlite3_register_cksumvfs
} {SQLITE_OK}
sqlite3 db test.db
file_control_reservebytes db 8
execsql {
PRAGMA page_size = 4096;
}
set text [db one "SELECT hex(randomblob(5000))"]
do_execsql_test 1.0 {
CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c);
INSERT INTO t1 VALUES(1, $text, NULL);
}
do_execsql_test 1.1 {
SELECT * FROM t1;
} [list 1 $text {}]
do_execsql_test 1.2 {
DELETE FROM t1;
}
do_test 1.3 {
execsql BEGIN
for {set ii 1500} {$ii < 10000} {incr ii} {
execsql { INSERT INTO t1 VALUES(NULL, randomblob(5000), randomblob($ii)) }
}
execsql COMMIT
} {}
do_execsql_test 1.4 {
SELECT count(b) FROM t1
} {8500}
do_execsql_test 1.5 {
PRAGMA journal_mode = wal;
DELETE FROM t1;
} {wal}
do_execsql_test 1.6 {
PRAGMA wal_checkpoint;
} {/0 # #/}
do_execsql_test 1.7 {
WITH s(i) AS (
VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<100
)
INSERT INTO t1 SELECT NULL, randomblob(5000), randomblob(i) FROM s;
SELECT count(*) FROM t1;
} {100}
db_save_and_close
db_restore_and_reopen
do_execsql_test 1.8 {
SELECT count(*) FROM t1;
} {100}
db close
sqlite3 db test.db
do_execsql_test 1.9 {
SELECT count(*) FROM t1;
} {100}
finish_test