Annotation of embedaddon/sqlite3/test/index4.test, revision 1.1.1.1
1.1 misho 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>