File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / index4.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: # 2011 July 9
    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.  The
   12: # focus of this file is testing the CREATE INDEX statement.
   13: #
   14: 
   15: set testdir [file dirname $argv0]
   16: source $testdir/tester.tcl
   17: 
   18: set testprefix index4
   19: 
   20: do_execsql_test 1.1 {
   21:   BEGIN;
   22:     CREATE TABLE t1(x);
   23:     INSERT INTO t1 VALUES(randomblob(102));
   24:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --     2
   25:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --     4
   26:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --     8
   27:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --    16
   28:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --    32
   29:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --    64
   30:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --   128
   31:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --   256
   32:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --   512
   33:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --  1024
   34:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --  2048
   35:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --  4096
   36:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     --  8192
   37:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     -- 16384
   38:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     -- 32768
   39:     INSERT INTO t1 SELECT randomblob(102) FROM t1;     -- 65536
   40:   COMMIT;
   41: }
   42: 
   43: do_execsql_test 1.2 {
   44:   CREATE INDEX i1 ON t1(x);
   45: }
   46: do_execsql_test 1.3 {
   47:   PRAGMA integrity_check 
   48: } {ok}
   49: 
   50: # The same test again - this time with limited memory.
   51: #
   52: ifcapable memorymanage {
   53:   set soft_limit [sqlite3_soft_heap_limit 50000]
   54: 
   55:   db close
   56:   sqlite3 db test.db
   57: 
   58:   do_execsql_test 1.4 {
   59:     PRAGMA cache_size = 10;
   60:     CREATE INDEX i2 ON t1(x);
   61:   }
   62:   do_execsql_test 1.5 {
   63:     PRAGMA integrity_check 
   64:   } {ok}
   65: 
   66:   sqlite3_soft_heap_limit $soft_limit
   67: }
   68: 
   69: 
   70: do_execsql_test 1.6 {
   71:   BEGIN;
   72:     DROP TABLE t1;
   73:     CREATE TABLE t1(x);
   74:     INSERT INTO t1 VALUES('a');
   75:     INSERT INTO t1 VALUES('b');
   76:     INSERT INTO t1 VALUES('c');
   77:     INSERT INTO t1 VALUES('d');
   78:     INSERT INTO t1 VALUES('e');
   79:     INSERT INTO t1 VALUES('f');
   80:     INSERT INTO t1 VALUES('g');
   81:     INSERT INTO t1 VALUES(NULL);
   82:     INSERT INTO t1 SELECT randomblob(1202) FROM t1;     --    16
   83:     INSERT INTO t1 SELECT randomblob(2202) FROM t1;     --    32
   84:     INSERT INTO t1 SELECT randomblob(3202) FROM t1;     --    64
   85:     INSERT INTO t1 SELECT randomblob(4202) FROM t1;     --   128
   86:     INSERT INTO t1 SELECT randomblob(5202) FROM t1;     --   256
   87:   COMMIT;
   88:   CREATE INDEX i1 ON t1(x); 
   89:   PRAGMA integrity_check
   90: } {ok}
   91: 
   92: do_execsql_test 1.7 {
   93:   BEGIN;
   94:     DROP TABLE t1;
   95:     CREATE TABLE t1(x);
   96:     INSERT INTO t1 VALUES('a');
   97:   COMMIT;
   98:   CREATE INDEX i1 ON t1(x); 
   99:   PRAGMA integrity_check
  100: } {ok}
  101: 
  102: do_execsql_test 1.8 {
  103:   BEGIN;
  104:     DROP TABLE t1;
  105:     CREATE TABLE t1(x);
  106:   COMMIT;
  107:   CREATE INDEX i1 ON t1(x); 
  108:   PRAGMA integrity_check
  109: } {ok}
  110: 
  111: do_execsql_test 2.1 {
  112:   BEGIN;
  113:     CREATE TABLE t2(x);
  114:     INSERT INTO t2 VALUES(14);
  115:     INSERT INTO t2 VALUES(35);
  116:     INSERT INTO t2 VALUES(15);
  117:     INSERT INTO t2 VALUES(35);
  118:     INSERT INTO t2 VALUES(16);
  119:   COMMIT;
  120: }
  121: do_catchsql_test 2.2 {
  122:   CREATE UNIQUE INDEX i3 ON t2(x);
  123: } {1 {indexed columns are not unique}}
  124: 
  125: 
  126: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>