gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/index4.test (about)

     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 {UNIQUE constraint failed: t2.x}}
   124  
   125  
   126  finish_test