File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / pagesize.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 4 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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.1.1.1 2012/02/21 17:04:16 misho 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>