# use AROS_LIB/INCLUDES
[AROS-Contrib.git] / sqlite3 / test / pagesize.test
bloba48639603ea13be887f99e9b1951079a14e410f0
1 # 2004 September 2
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.
12 # This file implements tests for the page_size PRAGMA.
14 # $Id: pagesize.test,v 1.10 2005/05/20 20:01:56 drh Exp $
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
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
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
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
43 do_test pagesize-1.4 {
44   db close
45   file delete -force 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 do_test pagesize-1.6 {
59   execsql {
60     PRAGMA page_size=8192;
61     PRAGMA page_size;
62   }
63 } 8192
64 do_test pagesize-1.7 {
65   execsql {
66     PRAGMA page_size=65537;
67     PRAGMA page_size;
68   }
69 } 8192
70 do_test pagesize-1.8 {
71   execsql {
72     PRAGMA page_size=1234;
73     PRAGMA page_size
74   }
75 } 8192
77 foreach PGSZ {512 2048 4096 8192} {
78   do_test pagesize-2.$PGSZ.0 {
79     db close
80     sqlite3 db :memory:
81     execsql "PRAGMA page_size=$PGSZ;"
82     execsql {PRAGMA page_size}
83   } 1024
84   do_test pagesize-2.$PGSZ.1 {
85     db close
86     file delete -force test.db
87     sqlite3 db test.db
88     execsql "PRAGMA page_size=$PGSZ"
89     execsql {
90       CREATE TABLE t1(x);
91       PRAGMA page_size;
92     }
93   } $PGSZ
94   do_test pagesize-2.$PGSZ.2 {
95     db close
96     sqlite3 db test.db
97     execsql {
98       PRAGMA page_size
99     }
100   } $PGSZ
101   do_test pagesize-2.$PGSZ.3 {
102     file size test.db
103   } [expr {$PGSZ*($AUTOVACUUM?3:2)}]
104   ifcapable {vacuum} {
105     do_test pagesize-2.$PGSZ.4 {
106       execsql {VACUUM}
107     } {}
108   }
109   integrity_check pagesize-2.$PGSZ.5
110   do_test pagesize-2.$PGSZ.6 {
111     db close
112     sqlite3 db test.db
113     execsql {PRAGMA page_size}
114   } $PGSZ
115   do_test pagesize-2.$PGSZ.7 {
116     execsql {
117       INSERT INTO t1 VALUES(randstr(10,9000));
118       INSERT INTO t1 VALUES(randstr(10,9000));
119       INSERT INTO t1 VALUES(randstr(10,9000));
120       BEGIN;
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       SELECT count(*) FROM t1;
126     }
127   } 48
128   do_test pagesize-2.$PGSZ.8 {
129     execsql {
130       ROLLBACK;
131       SELECT count(*) FROM t1;
132     }
133   } 3
134   integrity_check pagesize-2.$PGSZ.9
135   do_test pagesize-2.$PGSZ.10 {
136     db close
137     sqlite3 db test.db
138     execsql {PRAGMA page_size}
139   } $PGSZ
140   do_test pagesize-2.$PGSZ.11 {
141     execsql {
142       INSERT INTO t1 SELECT x||x FROM t1;
143       INSERT INTO t1 SELECT x||x FROM t1;
144       INSERT INTO t1 SELECT x||x FROM t1;
145       INSERT INTO t1 SELECT x||x FROM t1;
146       INSERT INTO t1 SELECT x||x FROM t1;
147       INSERT INTO t1 SELECT x||x FROM t1;
148       SELECT count(*) FROM t1;
149     }
150   } 192
151   do_test pagesize-2.$PGSZ.12 {
152     execsql {
153       BEGIN;
154       DELETE FROM t1 WHERE rowid%5!=0;
155       SELECT count(*) FROM t1;
156     }
157   } 38
158   do_test pagesize-2.$PGSZ.13 {
159     execsql {
160       ROLLBACK;
161       SELECT count(*) FROM t1;
162     }
163   } 192
164   integrity_check pagesize-2.$PGSZ.14
165   do_test pagesize-2.$PGSZ.15 {
166     execsql {DELETE FROM t1 WHERE rowid%5!=0}
167     ifcapable {vacuum} {execsql VACUUM}
168     execsql {SELECT count(*) FROM t1}
169   } 38
170   do_test pagesize-2.$PGSZ.16 {
171     execsql {DROP TABLE t1}
172     ifcapable {vacuum} {execsql VACUUM}
173   } {}
174   integrity_check pagesize-2.$PGSZ.17
177 finish_test