blob: 6d59fb0fafc0dc3a2af2b3967544a0a88c090d3d [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#
drh06f50212004-11-02 14:24:33 +000014# $Id: pagesize.test,v 1.5 2004/11/02 14:24:35 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
drh06f50212004-11-02 14:24:33 +000061do_test pagesize-1.8 {
62 execsql {
63 PRAGMA page_size=1234;
64 PRAGMA page_size
65 }
66} 8192
drh5bb7ffe2004-09-02 15:14:00 +000067
drh06f50212004-11-02 14:24:33 +000068foreach PGSZ {512 2048 4096 8192} {
drhf2a611c2004-09-05 00:33:43 +000069 do_test pagesize-2.$PGSZ.1 {
70 db close
71 file delete -force test.db
72 sqlite3 db test.db
73 execsql "PRAGMA page_size=$PGSZ"
74 execsql {
75 CREATE TABLE t1(x);
76 PRAGMA page_size;
77 }
78 } $PGSZ
79 do_test pagesize-2.$PGSZ.2 {
80 db close
81 sqlite3 db test.db
82 execsql {
83 PRAGMA page_size
84 }
85 } $PGSZ
86 do_test pagesize-2.$PGSZ.3 {
87 file size test.db
88 } [expr {$PGSZ*2}]
89 do_test pagesize-2.$PGSZ.4 {
90 execsql {VACUUM}
91 } {}
92 integrity_check pagesize-2.$PGSZ.5
93 do_test pagesize-2.$PGSZ.6 {
94 db close
95 sqlite3 db test.db
96 execsql {PRAGMA page_size}
97 } $PGSZ
98 do_test pagesize-2.$PGSZ.7 {
99 execsql {
100 INSERT INTO t1 VALUES(randstr(10,9000));
101 INSERT INTO t1 VALUES(randstr(10,9000));
102 INSERT INTO t1 VALUES(randstr(10,9000));
103 BEGIN;
104 INSERT INTO t1 SELECT x||x FROM t1;
105 INSERT INTO t1 SELECT x||x FROM t1;
106 INSERT INTO t1 SELECT x||x FROM t1;
107 INSERT INTO t1 SELECT x||x FROM t1;
108 SELECT count(*) FROM t1;
109 }
110 } 48
111 do_test pagesize-2.$PGSZ.8 {
112 execsql {
113 ROLLBACK;
114 SELECT count(*) FROM t1;
115 }
116 } 3
117 integrity_check pagesize-2.$PGSZ.9
118 do_test pagesize-2.$PGSZ.10 {
119 db close
120 sqlite3 db test.db
121 execsql {PRAGMA page_size}
122 } $PGSZ
123 do_test pagesize-2.$PGSZ.11 {
124 execsql {
125 INSERT INTO t1 SELECT x||x FROM t1;
126 INSERT INTO t1 SELECT x||x FROM t1;
127 INSERT INTO t1 SELECT x||x FROM t1;
128 INSERT INTO t1 SELECT x||x FROM t1;
129 INSERT INTO t1 SELECT x||x FROM t1;
130 INSERT INTO t1 SELECT x||x FROM t1;
131 SELECT count(*) FROM t1;
132 }
133 } 192
134 do_test pagesize-2.$PGSZ.12 {
135 execsql {
136 BEGIN;
137 DELETE FROM t1 WHERE rowid%5!=0;
138 SELECT count(*) FROM t1;
139 }
140 } 38
141 do_test pagesize-2.$PGSZ.13 {
142 execsql {
143 ROLLBACK;
144 SELECT count(*) FROM t1;
145 }
146 } 192
147 integrity_check pagesize-2.$PGSZ.14
148 do_test pagesize-2.$PGSZ.15 {
149 execsql {
150 DELETE FROM t1 WHERE rowid%5!=0;
151 VACUUM;
152 SELECT count(*) FROM t1;
153 }
154 } 38
155 do_test pagesize-2.$PGSZ.16 {
156 execsql {
157 DROP TABLE t1;
158 VACUUM;
159 }
160 } {}
161 integrity_check pagesize-2.$PGSZ.17
162}
drh5bb7ffe2004-09-02 15:14:00 +0000163
164finish_test