blob: f794a8f45b2faaf1ee65692962c93525da29e9d0 [file] [log] [blame]
drh5bb7ffe2004-09-02 15:14:00 +00001# 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#
drhf2a611c2004-09-05 00:33:43 +000014# $Id: pagesize.test,v 1.3 2004/09/05 00:33:44 drh Exp $
drh5bb7ffe2004-09-02 15:14:00 +000015
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
drhf2a611c2004-09-05 00:33:43 +000033
drh5bb7ffe2004-09-02 15:14:00 +000034do_test pagesize-1.4 {
35 db close
36 file delete -force test.db
37 sqlite3 db test.db
38 execsql {
drhf2a611c2004-09-05 00:33:43 +000039 PRAGMA page_size=511;
drh5bb7ffe2004-09-02 15:14:00 +000040 PRAGMA page_size;
41 }
drhf2a611c2004-09-05 00:33:43 +000042} 1024
drh5bb7ffe2004-09-02 15:14:00 +000043do_test pagesize-1.5 {
drh5bb7ffe2004-09-02 15:14:00 +000044 execsql {
drhf2a611c2004-09-05 00:33:43 +000045 PRAGMA page_size=512;
46 PRAGMA page_size;
drh5bb7ffe2004-09-02 15:14:00 +000047 }
drhf2a611c2004-09-05 00:33:43 +000048} 512
drh5bb7ffe2004-09-02 15:14:00 +000049do_test pagesize-1.6 {
drhf2a611c2004-09-05 00:33:43 +000050 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
drh5bb7ffe2004-09-02 15:14:00 +000062
63
drhf2a611c2004-09-05 00:33:43 +000064foreach PGSZ {512 2000 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}
drh5bb7ffe2004-09-02 15:14:00 +0000159
160finish_test