Annotation of embedaddon/sqlite3/test/pagesize.test, revision 1.1.1.1
1.1 misho 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: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>