📄 filefmt.test
字号:
# 2007 April 6## 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.##***********************************************************************# This file implements regression tests for SQLite library.## This file implements tests to verify database file format.## $Id: filefmt.test,v 1.2 2007/04/06 21:42:22 drh Exp $set testdir [file dirname $argv0]source $testdir/tester.tcldb closefile delete -force test.db test.db-journal# Database begins with valid 16-byte header string.#do_test filefmt-1.1 { sqlite3 db test.db db eval {CREATE TABLE t1(x)} db close hexio_read test.db 0 16} {53514C69746520666F726D6174203300}# If the 16-byte header is changed, the file will not open#do_test filefmt-1.2 { hexio_write test.db 0 54 set x [catch {sqlite3 db test.db} err] lappend x $err} {0 {}}do_test filefmt-1.3 { catchsql { SELECT count(*) FROM sqlite_master }} {1 {file is encrypted or is not a database}}do_test filefmt-1.4 { db close hexio_write test.db 0 53 sqlite3 db test.db catchsql { SELECT count(*) FROM sqlite_master }} {0 1}# The page-size is stored at offset 16#ifcapable pager_pragmas { foreach pagesize {512 1024 2048 4096 8192 16384 32768} { if {[info exists SQLITE_MAX_PAGE_SIZE] && $pagesize>$SQLITE_MAX_PAGE_SIZE} continue do_test filefmt-1.5.$pagesize.1 { db close file delete -force test.db sqlite3 db test.db db eval "PRAGMA auto_vacuum=OFF" db eval "PRAGMA page_size=$pagesize" db eval {CREATE TABLE t1(x)} file size test.db } [expr $pagesize*2] do_test filefmt-1.5.$pagesize.2 { hexio_get_int [hexio_read test.db 16 2] } $pagesize }}# The page-size must be a power of 2#do_test filefmt-1.6 { db close hexio_write test.db 16 [hexio_render_int16 1025] sqlite3 db test.db catchsql { SELECT count(*) FROM sqlite_master }} {1 {file is encrypted or is not a database}}# The page-size must be at least 512 bytes#do_test filefmt-1.7 { db close hexio_write test.db 16 [hexio_render_int16 256] sqlite3 db test.db catchsql { SELECT count(*) FROM sqlite_master }} {1 {file is encrypted or is not a database}}# Usable space per page (page-size minus unused space per page)# must be at least 500 bytes#ifcapable pager_pragmas { do_test filefmt-1.8 { db close file delete -force test.db sqlite3 db test.db db eval {PRAGMA page_size=512; CREATE TABLE t1(x)} db close hexio_write test.db 20 10 sqlite3 db test.db catchsql { SELECT count(*) FROM sqlite_master } } {1 {file is encrypted or is not a database}}}finish_test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -