blob: a1567cb4b81d88e351e7fa267c6d221c8a3e94c9 [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#
danielk197745901d62004-11-10 15:27:38 +000014# $Id: pagesize.test,v 1.8 2004/11/10 15:27:38 danielk1977 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
drh6bf89572004-11-03 16:27:01 +000023ifcapable {explain} {
24 do_test pagesize-1.2 {
25 catch {execsql {EXPLAIN PRAGMA page_size}}
26 } 0
27}
drh5bb7ffe2004-09-02 15:14:00 +000028do_test pagesize-1.3 {
29 execsql {
30 CREATE TABLE t1(a);
31 PRAGMA page_size=2048;
32 PRAGMA page_size;
33 }
34} 1024
drhf2a611c2004-09-05 00:33:43 +000035
drh5bb7ffe2004-09-02 15:14:00 +000036do_test pagesize-1.4 {
37 db close
38 file delete -force test.db
39 sqlite3 db test.db
40 execsql {
drhf2a611c2004-09-05 00:33:43 +000041 PRAGMA page_size=511;
drh5bb7ffe2004-09-02 15:14:00 +000042 PRAGMA page_size;
43 }
drhf2a611c2004-09-05 00:33:43 +000044} 1024
drh5bb7ffe2004-09-02 15:14:00 +000045do_test pagesize-1.5 {
drh5bb7ffe2004-09-02 15:14:00 +000046 execsql {
drhf2a611c2004-09-05 00:33:43 +000047 PRAGMA page_size=512;
48 PRAGMA page_size;
drh5bb7ffe2004-09-02 15:14:00 +000049 }
drhf2a611c2004-09-05 00:33:43 +000050} 512
drh5bb7ffe2004-09-02 15:14:00 +000051do_test pagesize-1.6 {
drhf2a611c2004-09-05 00:33:43 +000052 execsql {
53 PRAGMA page_size=8192;
54 PRAGMA page_size;
55 }
56} 8192
57do_test pagesize-1.7 {
58 execsql {
59 PRAGMA page_size=65537;
60 PRAGMA page_size;
61 }
62} 8192
drh06f50212004-11-02 14:24:33 +000063do_test pagesize-1.8 {
64 execsql {
65 PRAGMA page_size=1234;
66 PRAGMA page_size
67 }
68} 8192
drh5bb7ffe2004-09-02 15:14:00 +000069
drh06f50212004-11-02 14:24:33 +000070foreach PGSZ {512 2048 4096 8192} {
drhf2a611c2004-09-05 00:33:43 +000071 do_test pagesize-2.$PGSZ.1 {
72 db close
73 file delete -force test.db
74 sqlite3 db test.db
75 execsql "PRAGMA page_size=$PGSZ"
76 execsql {
77 CREATE TABLE t1(x);
78 PRAGMA page_size;
79 }
80 } $PGSZ
81 do_test pagesize-2.$PGSZ.2 {
82 db close
83 sqlite3 db test.db
84 execsql {
85 PRAGMA page_size
86 }
87 } $PGSZ
88 do_test pagesize-2.$PGSZ.3 {
89 file size test.db
danielk197745901d62004-11-10 15:27:38 +000090 } [expr {$PGSZ*($AUTOVACUUM?3:2)}]
drh798da522004-11-04 04:42:28 +000091 ifcapable {vacuum} {
92 do_test pagesize-2.$PGSZ.4 {
93 execsql {VACUUM}
94 } {}
95 }
drhf2a611c2004-09-05 00:33:43 +000096 integrity_check pagesize-2.$PGSZ.5
97 do_test pagesize-2.$PGSZ.6 {
98 db close
99 sqlite3 db test.db
100 execsql {PRAGMA page_size}
101 } $PGSZ
102 do_test pagesize-2.$PGSZ.7 {
103 execsql {
104 INSERT INTO t1 VALUES(randstr(10,9000));
105 INSERT INTO t1 VALUES(randstr(10,9000));
106 INSERT INTO t1 VALUES(randstr(10,9000));
107 BEGIN;
108 INSERT INTO t1 SELECT x||x FROM t1;
109 INSERT INTO t1 SELECT x||x FROM t1;
110 INSERT INTO t1 SELECT x||x FROM t1;
111 INSERT INTO t1 SELECT x||x FROM t1;
112 SELECT count(*) FROM t1;
113 }
114 } 48
115 do_test pagesize-2.$PGSZ.8 {
116 execsql {
117 ROLLBACK;
118 SELECT count(*) FROM t1;
119 }
120 } 3
121 integrity_check pagesize-2.$PGSZ.9
122 do_test pagesize-2.$PGSZ.10 {
123 db close
124 sqlite3 db test.db
125 execsql {PRAGMA page_size}
126 } $PGSZ
127 do_test pagesize-2.$PGSZ.11 {
128 execsql {
129 INSERT INTO t1 SELECT x||x FROM t1;
130 INSERT INTO t1 SELECT x||x FROM t1;
131 INSERT INTO t1 SELECT x||x FROM t1;
132 INSERT INTO t1 SELECT x||x FROM t1;
133 INSERT INTO t1 SELECT x||x FROM t1;
134 INSERT INTO t1 SELECT x||x FROM t1;
135 SELECT count(*) FROM t1;
136 }
137 } 192
138 do_test pagesize-2.$PGSZ.12 {
139 execsql {
140 BEGIN;
141 DELETE FROM t1 WHERE rowid%5!=0;
142 SELECT count(*) FROM t1;
143 }
144 } 38
145 do_test pagesize-2.$PGSZ.13 {
146 execsql {
147 ROLLBACK;
148 SELECT count(*) FROM t1;
149 }
150 } 192
151 integrity_check pagesize-2.$PGSZ.14
152 do_test pagesize-2.$PGSZ.15 {
drh798da522004-11-04 04:42:28 +0000153 execsql {DELETE FROM t1 WHERE rowid%5!=0}
154 ifcapable {vacuum} {execsql VACUUM}
155 execsql {SELECT count(*) FROM t1}
drhf2a611c2004-09-05 00:33:43 +0000156 } 38
157 do_test pagesize-2.$PGSZ.16 {
drh798da522004-11-04 04:42:28 +0000158 execsql {DROP TABLE t1}
159 ifcapable {vacuum} {execsql VACUUM}
drhf2a611c2004-09-05 00:33:43 +0000160 } {}
161 integrity_check pagesize-2.$PGSZ.17
162}
drh5bb7ffe2004-09-02 15:14:00 +0000163
164finish_test