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.4 2004/10/22 16:22:59 drh Exp $ 15 16 17set testdir [file dirname $argv0] 18source $testdir/tester.tcl 19 20do_test pagesize-1.1 { 21 execsql {PRAGMA page_size} 22} 1024 23do_test pagesize-1.2 { 24 catch {execsql {EXPLAIN PRAGMA page_size}} 25} 0 26do_test pagesize-1.3 { 27 execsql { 28 CREATE TABLE t1(a); 29 PRAGMA page_size=2048; 30 PRAGMA page_size; 31 } 32} 1024 33 34do_test pagesize-1.4 { 35 db close 36 file delete -force test.db 37 sqlite3 db test.db 38 execsql { 39 PRAGMA page_size=511; 40 PRAGMA page_size; 41 } 42} 1024 43do_test pagesize-1.5 { 44 execsql { 45 PRAGMA page_size=512; 46 PRAGMA page_size; 47 } 48} 512 49do_test pagesize-1.6 { 50 execsql { 51 PRAGMA page_size=8192; 52 PRAGMA page_size; 53 } 54} 8192 55do_test pagesize-1.7 { 56 execsql { 57 PRAGMA page_size=65537; 58 PRAGMA page_size; 59 } 60} 8192 61 62 63 64foreach PGSZ {512 515 516 751 2000 2001 2002 2003 2004 2048 3000 4096} { 65 do_test pagesize-2.$PGSZ.1 { 66 db close 67 file delete -force test.db 68 sqlite3 db test.db 69 execsql "PRAGMA page_size=$PGSZ" 70 execsql { 71 CREATE TABLE t1(x); 72 PRAGMA page_size; 73 } 74 } $PGSZ 75 do_test pagesize-2.$PGSZ.2 { 76 db close 77 sqlite3 db test.db 78 execsql { 79 PRAGMA page_size 80 } 81 } $PGSZ 82 do_test pagesize-2.$PGSZ.3 { 83 file size test.db 84 } [expr {$PGSZ*2}] 85 do_test pagesize-2.$PGSZ.4 { 86 execsql {VACUUM} 87 } {} 88 integrity_check pagesize-2.$PGSZ.5 89 do_test pagesize-2.$PGSZ.6 { 90 db close 91 sqlite3 db test.db 92 execsql {PRAGMA page_size} 93 } $PGSZ 94 do_test pagesize-2.$PGSZ.7 { 95 execsql { 96 INSERT INTO t1 VALUES(randstr(10,9000)); 97 INSERT INTO t1 VALUES(randstr(10,9000)); 98 INSERT INTO t1 VALUES(randstr(10,9000)); 99 BEGIN; 100 INSERT INTO t1 SELECT x||x FROM t1; 101 INSERT INTO t1 SELECT x||x FROM t1; 102 INSERT INTO t1 SELECT x||x FROM t1; 103 INSERT INTO t1 SELECT x||x FROM t1; 104 SELECT count(*) FROM t1; 105 } 106 } 48 107 do_test pagesize-2.$PGSZ.8 { 108 execsql { 109 ROLLBACK; 110 SELECT count(*) FROM t1; 111 } 112 } 3 113 integrity_check pagesize-2.$PGSZ.9 114 do_test pagesize-2.$PGSZ.10 { 115 db close 116 sqlite3 db test.db 117 execsql {PRAGMA page_size} 118 } $PGSZ 119 do_test pagesize-2.$PGSZ.11 { 120 execsql { 121 INSERT INTO t1 SELECT x||x FROM t1; 122 INSERT INTO t1 SELECT x||x FROM t1; 123 INSERT INTO t1 SELECT x||x FROM t1; 124 INSERT INTO t1 SELECT x||x FROM t1; 125 INSERT INTO t1 SELECT x||x FROM t1; 126 INSERT INTO t1 SELECT x||x FROM t1; 127 SELECT count(*) FROM t1; 128 } 129 } 192 130 do_test pagesize-2.$PGSZ.12 { 131 execsql { 132 BEGIN; 133 DELETE FROM t1 WHERE rowid%5!=0; 134 SELECT count(*) FROM t1; 135 } 136 } 38 137 do_test pagesize-2.$PGSZ.13 { 138 execsql { 139 ROLLBACK; 140 SELECT count(*) FROM t1; 141 } 142 } 192 143 integrity_check pagesize-2.$PGSZ.14 144 do_test pagesize-2.$PGSZ.15 { 145 execsql { 146 DELETE FROM t1 WHERE rowid%5!=0; 147 VACUUM; 148 SELECT count(*) FROM t1; 149 } 150 } 38 151 do_test pagesize-2.$PGSZ.16 { 152 execsql { 153 DROP TABLE t1; 154 VACUUM; 155 } 156 } {} 157 integrity_check pagesize-2.$PGSZ.17 158} 159 160finish_test 161