gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/pagesize.test (about) 1 # 2004 September 2 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #*********************************************************************** 11 # This file implements regression tests for SQLite library. 12 # This file implements tests for the page_size PRAGMA. 13 # 14 # $Id: pagesize.test,v 1.13 2008/08/26 21:07:27 drh Exp $ 15 16 17 set testdir [file dirname $argv0] 18 source $testdir/tester.tcl 19 20 # This test script depends entirely on "PRAGMA page_size". So if this 21 # pragma is not available, omit the whole file. 22 ifcapable !pager_pragmas { 23 finish_test 24 return 25 } 26 27 do_test pagesize-1.1 { 28 execsql {PRAGMA page_size} 29 } 1024 30 ifcapable {explain} { 31 do_test pagesize-1.2 { 32 catch {execsql {EXPLAIN PRAGMA page_size}} 33 } 0 34 } 35 do_test pagesize-1.3 { 36 execsql { 37 CREATE TABLE t1(a); 38 PRAGMA page_size=2048; 39 PRAGMA page_size; 40 } 41 } 1024 42 43 do_test pagesize-1.4 { 44 db close 45 forcedelete test.db 46 sqlite3 db test.db 47 execsql { 48 PRAGMA page_size=511; 49 PRAGMA page_size; 50 } 51 } 1024 52 do_test pagesize-1.5 { 53 execsql { 54 PRAGMA page_size=512; 55 PRAGMA page_size; 56 } 57 } 512 58 if {![info exists SQLITE_MAX_PAGE_SIZE] || $SQLITE_MAX_PAGE_SIZE>=8192} { 59 do_test pagesize-1.6 { 60 execsql { 61 PRAGMA page_size=8192; 62 PRAGMA page_size; 63 } 64 } 8192 65 do_test pagesize-1.7 { 66 execsql { 67 PRAGMA page_size=65537; 68 PRAGMA page_size; 69 } 70 } 8192 71 do_test pagesize-1.8 { 72 execsql { 73 PRAGMA page_size=1234; 74 PRAGMA page_size 75 } 76 } 8192 77 } 78 foreach PGSZ {512 2048 4096 8192} { 79 if {[info exists SQLITE_MAX_PAGE_SIZE] 80 && $SQLITE_MAX_PAGE_SIZE<$PGSZ} continue 81 ifcapable memorydb { 82 do_test pagesize-2.$PGSZ.0.1 { 83 db close 84 sqlite3 db :memory: 85 execsql "PRAGMA page_size=$PGSZ;" 86 execsql {PRAGMA page_size} 87 } $PGSZ 88 do_test pagesize-2.$PGSZ.0.2 { 89 execsql {CREATE TABLE t1(x UNIQUE, y UNIQUE, z UNIQUE)} 90 execsql {PRAGMA page_size} 91 } $PGSZ 92 do_test pagesize-2.$PGSZ.0.3 { 93 execsql { 94 INSERT INTO t1 VALUES(1,2,3); 95 INSERT INTO t1 VALUES(2,3,4); 96 SELECT * FROM t1; 97 } 98 } {1 2 3 2 3 4} 99 } 100 do_test pagesize-2.$PGSZ.1 { 101 db close 102 forcedelete test.db 103 sqlite3 db test.db 104 execsql "PRAGMA page_size=$PGSZ" 105 execsql { 106 CREATE TABLE t1(x); 107 PRAGMA page_size; 108 } 109 } $PGSZ 110 do_test pagesize-2.$PGSZ.2 { 111 db close 112 sqlite3 db test.db 113 execsql { 114 PRAGMA page_size 115 } 116 } $PGSZ 117 do_test pagesize-2.$PGSZ.3 { 118 file size test.db 119 } [expr {$PGSZ*($AUTOVACUUM?3:2)}] 120 ifcapable {vacuum} { 121 do_test pagesize-2.$PGSZ.4 { 122 execsql {VACUUM} 123 } {} 124 } 125 integrity_check pagesize-2.$PGSZ.5 126 do_test pagesize-2.$PGSZ.6 { 127 db close 128 sqlite3 db test.db 129 execsql {PRAGMA page_size} 130 } $PGSZ 131 do_test pagesize-2.$PGSZ.7 { 132 execsql { 133 INSERT INTO t1 VALUES(randstr(10,9000)); 134 INSERT INTO t1 VALUES(randstr(10,9000)); 135 INSERT INTO t1 VALUES(randstr(10,9000)); 136 BEGIN; 137 INSERT INTO t1 SELECT x||x FROM t1; 138 INSERT INTO t1 SELECT x||x FROM t1; 139 INSERT INTO t1 SELECT x||x FROM t1; 140 INSERT INTO t1 SELECT x||x FROM t1; 141 SELECT count(*) FROM t1; 142 } 143 } 48 144 do_test pagesize-2.$PGSZ.8 { 145 execsql { 146 ROLLBACK; 147 SELECT count(*) FROM t1; 148 } 149 } 3 150 integrity_check pagesize-2.$PGSZ.9 151 do_test pagesize-2.$PGSZ.10 { 152 db close 153 sqlite3 db test.db 154 execsql {PRAGMA page_size} 155 } $PGSZ 156 do_test pagesize-2.$PGSZ.11 { 157 execsql { 158 INSERT INTO t1 SELECT x||x FROM t1; 159 INSERT INTO t1 SELECT x||x FROM t1; 160 INSERT INTO t1 SELECT x||x FROM t1; 161 INSERT INTO t1 SELECT x||x FROM t1; 162 INSERT INTO t1 SELECT x||x FROM t1; 163 INSERT INTO t1 SELECT x||x FROM t1; 164 SELECT count(*) FROM t1; 165 } 166 } 192 167 do_test pagesize-2.$PGSZ.12 { 168 execsql { 169 BEGIN; 170 DELETE FROM t1 WHERE rowid%5!=0; 171 SELECT count(*) FROM t1; 172 } 173 } 38 174 do_test pagesize-2.$PGSZ.13 { 175 execsql { 176 ROLLBACK; 177 SELECT count(*) FROM t1; 178 } 179 } 192 180 integrity_check pagesize-2.$PGSZ.14 181 do_test pagesize-2.$PGSZ.15 { 182 execsql {DELETE FROM t1 WHERE rowid%5!=0} 183 ifcapable {vacuum} {execsql VACUUM} 184 execsql {SELECT count(*) FROM t1} 185 } 38 186 do_test pagesize-2.$PGSZ.16 { 187 execsql {DROP TABLE t1} 188 ifcapable {vacuum} {execsql VACUUM} 189 } {} 190 integrity_check pagesize-2.$PGSZ.17 191 192 db close 193 forcedelete test.db 194 sqlite3 db test.db 195 do_test pagesize-2.$PGSZ.30 { 196 execsql " 197 CREATE TABLE t1(x); 198 PRAGMA temp.page_size=$PGSZ; 199 CREATE TEMP TABLE t2(y); 200 PRAGMA main.page_size; 201 PRAGMA temp.page_size; 202 " 203 } [list 1024 $PGSZ] 204 205 db close 206 forcedelete test.db 207 sqlite3 db test.db 208 do_test pagesize-2.$PGSZ.40 { 209 execsql " 210 PRAGMA page_size=$PGSZ; 211 CREATE TABLE t1(x); 212 CREATE TEMP TABLE t2(y); 213 PRAGMA main.page_size; 214 PRAGMA temp.page_size; 215 " 216 } [list $PGSZ $PGSZ] 217 } 218 219 reset_db 220 do_execsql_test pagesize-3.1 { 221 BEGIN; 222 SELECT * FROM sqlite_master; 223 PRAGMA page_size=2048; 224 PRAGMA main.page_size; 225 } {1024} 226 do_execsql_test pagesize-3.2 { 227 CREATE TABLE t1(x); 228 COMMIT; 229 } 230 do_execsql_test pagesize-3.3 { 231 BEGIN; 232 PRAGMA page_size = 2048; 233 COMMIT; 234 PRAGMA main.page_size; 235 } {1024} 236 237 finish_test