xref: /sqlite-3.40.0/test/pagesize.test (revision 887dc4c2)
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.4 2004/10/22 16:22:59 drh Exp $
15
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
33
34do_test pagesize-1.4 {
35  db close
36  file delete -force test.db
37  sqlite3 db test.db
38  execsql {
39    PRAGMA page_size=511;
40    PRAGMA page_size;
41  }
42} 1024
43do_test pagesize-1.5 {
44  execsql {
45    PRAGMA page_size=512;
46    PRAGMA page_size;
47  }
48} 512
49do_test pagesize-1.6 {
50  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
62
63
64foreach PGSZ {512 515 516 751 2000 2001 2002 2003 2004 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}
159
160finish_test
161