OLD | NEW |
1 # 2001 September 15 | 1 # 2001 September 15 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #*********************************************************************** | 10 #*********************************************************************** |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 } {5 5 hello world} | 69 } {5 5 hello world} |
70 | 70 |
71 # Attempting to insert a duplicate primary key should give a constraint | 71 # Attempting to insert a duplicate primary key should give a constraint |
72 # failure. | 72 # failure. |
73 # | 73 # |
74 do_test intpkey-1.6 { | 74 do_test intpkey-1.6 { |
75 set r [catch {execsql { | 75 set r [catch {execsql { |
76 INSERT INTO t1 VALUES(5,'second','entry'); | 76 INSERT INTO t1 VALUES(5,'second','entry'); |
77 }} msg] | 77 }} msg] |
78 lappend r $msg | 78 lappend r $msg |
79 } {1 {PRIMARY KEY must be unique}} | 79 } {1 {UNIQUE constraint failed: t1.a}} |
80 do_test intpkey-1.7 { | 80 do_test intpkey-1.7 { |
81 execsql { | 81 execsql { |
82 SELECT rowid, * FROM t1; | 82 SELECT rowid, * FROM t1; |
83 } | 83 } |
84 } {5 5 hello world} | 84 } {5 5 hello world} |
85 do_test intpkey-1.8 { | 85 do_test intpkey-1.8 { |
86 set r [catch {execsql { | 86 set r [catch {execsql { |
87 INSERT INTO t1 VALUES(6,'second','entry'); | 87 INSERT INTO t1 VALUES(6,'second','entry'); |
88 }} msg] | 88 }} msg] |
89 lappend r $msg | 89 lappend r $msg |
(...skipping 28 matching lines...) Expand all Loading... |
118 | 118 |
119 # Make sure SELECT statements are able to use the primary key column | 119 # Make sure SELECT statements are able to use the primary key column |
120 # as an index. | 120 # as an index. |
121 # | 121 # |
122 do_test intpkey-1.12.1 { | 122 do_test intpkey-1.12.1 { |
123 execsql { | 123 execsql { |
124 SELECT * FROM t1 WHERE a==4; | 124 SELECT * FROM t1 WHERE a==4; |
125 } | 125 } |
126 } {4 one two} | 126 } {4 one two} |
127 do_test intpkey-1.12.2 { | 127 do_test intpkey-1.12.2 { |
128 set sqlite_query_plan | 128 execsql { |
129 } {t1 *} | 129 EXPLAIN QUERY PLAN |
| 130 SELECT * FROM t1 WHERE a==4; |
| 131 } |
| 132 } {/SEARCH TABLE t1 /} |
130 | 133 |
131 # Try to insert a non-integer value into the primary key field. This | 134 # Try to insert a non-integer value into the primary key field. This |
132 # should result in a data type mismatch. | 135 # should result in a data type mismatch. |
133 # | 136 # |
134 do_test intpkey-1.13.1 { | 137 do_test intpkey-1.13.1 { |
135 set r [catch {execsql { | 138 set r [catch {execsql { |
136 INSERT INTO t1 VALUES('x','y','z'); | 139 INSERT INTO t1 VALUES('x','y','z'); |
137 }} msg] | 140 }} msg] |
138 lappend r $msg | 141 lappend r $msg |
139 } {1 {datatype mismatch}} | 142 } {1 {datatype mismatch}} |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
369 do_test intpkey-5.1 { | 372 do_test intpkey-5.1 { |
370 execsql { | 373 execsql { |
371 INSERT INTO t1 VALUES(0,'zero','entry'); | 374 INSERT INTO t1 VALUES(0,'zero','entry'); |
372 } | 375 } |
373 count { | 376 count { |
374 SELECT * FROM t1 WHERE a=0; | 377 SELECT * FROM t1 WHERE a=0; |
375 } | 378 } |
376 } {0 zero entry 0} | 379 } {0 zero entry 0} |
377 do_test intpkey-5.2 { | 380 do_test intpkey-5.2 { |
378 execsql { | 381 execsql { |
379 SELECT rowid, a FROM t1 | 382 SELECT rowid, a FROM t1 ORDER BY rowid |
380 } | 383 } |
381 } {-4 -4 0 0 5 5 6 6 11 11} | 384 } {-4 -4 0 0 5 5 6 6 11 11} |
382 | 385 |
383 # Test the ability of the COPY command to put data into a | 386 # Test the ability of the COPY command to put data into a |
384 # table that contains an integer primary key. | 387 # table that contains an integer primary key. |
385 # | 388 # |
386 # COPY command has been removed. But we retain these tests so | 389 # COPY command has been removed. But we retain these tests so |
387 # that the tables will contain the right data for tests that follow. | 390 # that the tables will contain the right data for tests that follow. |
388 # | 391 # |
389 do_test intpkey-6.1 { | 392 do_test intpkey-6.1 { |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 } | 599 } |
597 } {y zero 2 hello second hello b-20 b-22 new 3 big-1 big-2} | 600 } {y zero 2 hello second hello b-20 b-22 new 3 big-1 big-2} |
598 do_test intpkey-15.7 { | 601 do_test intpkey-15.7 { |
599 execsql { | 602 execsql { |
600 SELECT b FROM t1 WHERE a>12345678901; | 603 SELECT b FROM t1 WHERE a>12345678901; |
601 } | 604 } |
602 } {} | 605 } {} |
603 | 606 |
604 | 607 |
605 finish_test | 608 finish_test |
OLD | NEW |