Annotation of embedaddon/sqlite3/test/pagesize.test, revision 1.1
1.1 ! misho 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.13 2008/08/26 21:07:27 drh Exp $
! 15:
! 16:
! 17: set testdir [file dirname $argv0]
! 18: source $testdir/tester.tcl
! 19:
! 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
! 25: }
! 26:
! 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
! 34: }
! 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
! 42:
! 43: do_test pagesize-1.4 {
! 44: db close
! 45: forcedelete 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: if {![info exists SQLITE_MAX_PAGE_SIZE] || $SQLITE_MAX_PAGE_SIZE>=8192} {
! 59: do_test pagesize-1.6 {
! 60: execsql {
! 61: PRAGMA page_size=8192;
! 62: PRAGMA page_size;
! 63: }
! 64: } 8192
! 65: do_test pagesize-1.7 {
! 66: execsql {
! 67: PRAGMA page_size=65537;
! 68: PRAGMA page_size;
! 69: }
! 70: } 8192
! 71: do_test pagesize-1.8 {
! 72: execsql {
! 73: PRAGMA page_size=1234;
! 74: PRAGMA page_size
! 75: }
! 76: } 8192
! 77: }
! 78: foreach PGSZ {512 2048 4096 8192} {
! 79: if {[info exists SQLITE_MAX_PAGE_SIZE]
! 80: && $SQLITE_MAX_PAGE_SIZE<$PGSZ} continue
! 81: ifcapable memorydb {
! 82: do_test pagesize-2.$PGSZ.0.1 {
! 83: db close
! 84: sqlite3 db :memory:
! 85: execsql "PRAGMA page_size=$PGSZ;"
! 86: execsql {PRAGMA page_size}
! 87: } $PGSZ
! 88: do_test pagesize-2.$PGSZ.0.2 {
! 89: execsql {CREATE TABLE t1(x UNIQUE, y UNIQUE, z UNIQUE)}
! 90: execsql {PRAGMA page_size}
! 91: } $PGSZ
! 92: do_test pagesize-2.$PGSZ.0.3 {
! 93: execsql {
! 94: INSERT INTO t1 VALUES(1,2,3);
! 95: INSERT INTO t1 VALUES(2,3,4);
! 96: SELECT * FROM t1;
! 97: }
! 98: } {1 2 3 2 3 4}
! 99: }
! 100: do_test pagesize-2.$PGSZ.1 {
! 101: db close
! 102: forcedelete test.db
! 103: sqlite3 db test.db
! 104: execsql "PRAGMA page_size=$PGSZ"
! 105: execsql {
! 106: CREATE TABLE t1(x);
! 107: PRAGMA page_size;
! 108: }
! 109: } $PGSZ
! 110: do_test pagesize-2.$PGSZ.2 {
! 111: db close
! 112: sqlite3 db test.db
! 113: execsql {
! 114: PRAGMA page_size
! 115: }
! 116: } $PGSZ
! 117: do_test pagesize-2.$PGSZ.3 {
! 118: file size test.db
! 119: } [expr {$PGSZ*($AUTOVACUUM?3:2)}]
! 120: ifcapable {vacuum} {
! 121: do_test pagesize-2.$PGSZ.4 {
! 122: execsql {VACUUM}
! 123: } {}
! 124: }
! 125: integrity_check pagesize-2.$PGSZ.5
! 126: do_test pagesize-2.$PGSZ.6 {
! 127: db close
! 128: sqlite3 db test.db
! 129: execsql {PRAGMA page_size}
! 130: } $PGSZ
! 131: do_test pagesize-2.$PGSZ.7 {
! 132: execsql {
! 133: INSERT INTO t1 VALUES(randstr(10,9000));
! 134: INSERT INTO t1 VALUES(randstr(10,9000));
! 135: INSERT INTO t1 VALUES(randstr(10,9000));
! 136: BEGIN;
! 137: INSERT INTO t1 SELECT x||x FROM t1;
! 138: INSERT INTO t1 SELECT x||x FROM t1;
! 139: INSERT INTO t1 SELECT x||x FROM t1;
! 140: INSERT INTO t1 SELECT x||x FROM t1;
! 141: SELECT count(*) FROM t1;
! 142: }
! 143: } 48
! 144: do_test pagesize-2.$PGSZ.8 {
! 145: execsql {
! 146: ROLLBACK;
! 147: SELECT count(*) FROM t1;
! 148: }
! 149: } 3
! 150: integrity_check pagesize-2.$PGSZ.9
! 151: do_test pagesize-2.$PGSZ.10 {
! 152: db close
! 153: sqlite3 db test.db
! 154: execsql {PRAGMA page_size}
! 155: } $PGSZ
! 156: do_test pagesize-2.$PGSZ.11 {
! 157: execsql {
! 158: INSERT INTO t1 SELECT x||x FROM t1;
! 159: INSERT INTO t1 SELECT x||x FROM t1;
! 160: INSERT INTO t1 SELECT x||x FROM t1;
! 161: INSERT INTO t1 SELECT x||x FROM t1;
! 162: INSERT INTO t1 SELECT x||x FROM t1;
! 163: INSERT INTO t1 SELECT x||x FROM t1;
! 164: SELECT count(*) FROM t1;
! 165: }
! 166: } 192
! 167: do_test pagesize-2.$PGSZ.12 {
! 168: execsql {
! 169: BEGIN;
! 170: DELETE FROM t1 WHERE rowid%5!=0;
! 171: SELECT count(*) FROM t1;
! 172: }
! 173: } 38
! 174: do_test pagesize-2.$PGSZ.13 {
! 175: execsql {
! 176: ROLLBACK;
! 177: SELECT count(*) FROM t1;
! 178: }
! 179: } 192
! 180: integrity_check pagesize-2.$PGSZ.14
! 181: do_test pagesize-2.$PGSZ.15 {
! 182: execsql {DELETE FROM t1 WHERE rowid%5!=0}
! 183: ifcapable {vacuum} {execsql VACUUM}
! 184: execsql {SELECT count(*) FROM t1}
! 185: } 38
! 186: do_test pagesize-2.$PGSZ.16 {
! 187: execsql {DROP TABLE t1}
! 188: ifcapable {vacuum} {execsql VACUUM}
! 189: } {}
! 190: integrity_check pagesize-2.$PGSZ.17
! 191:
! 192: db close
! 193: forcedelete test.db
! 194: sqlite3 db test.db
! 195: do_test pagesize-2.$PGSZ.30 {
! 196: execsql "
! 197: CREATE TABLE t1(x);
! 198: PRAGMA temp.page_size=$PGSZ;
! 199: CREATE TEMP TABLE t2(y);
! 200: PRAGMA main.page_size;
! 201: PRAGMA temp.page_size;
! 202: "
! 203: } [list 1024 $PGSZ]
! 204:
! 205: db close
! 206: forcedelete test.db
! 207: sqlite3 db test.db
! 208: do_test pagesize-2.$PGSZ.40 {
! 209: execsql "
! 210: PRAGMA page_size=$PGSZ;
! 211: CREATE TABLE t1(x);
! 212: CREATE TEMP TABLE t2(y);
! 213: PRAGMA main.page_size;
! 214: PRAGMA temp.page_size;
! 215: "
! 216: } [list $PGSZ $PGSZ]
! 217: }
! 218:
! 219: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>