| # 2010 September 28 |
| # |
| # The author disclaims copyright to this source code. In place of |
| # a legal notice, here is a blessing: |
| # |
| # May you do good and not evil. |
| # May you find forgiveness for yourself and forgive others. |
| # May you share freely, never taking more than you give. |
| # |
| #*********************************************************************** |
| # |
| # This file checks corner cases in the CREATE TABLE syntax to make |
| # sure that legacy syntax (syntax that is disallowed according to the |
| # syntax diagrams) is still accepted, so that older databases that use |
| # that syntax can still be read. |
| # |
| |
| set testdir [file dirname $argv0] |
| source $testdir/tester.tcl |
| |
| # Table constraints should be separated by commas, but they do not have |
| # to be. |
| # |
| do_test schema5-1.1 { |
| db eval { |
| CREATE TABLE t1(a,b,c, PRIMARY KEY(a) UNIQUE (a) CONSTRAINT one); |
| INSERT INTO t1 VALUES(1,2,3); |
| SELECT * FROM t1; |
| } |
| } {1 2 3} |
| do_test schema5-1.2 { |
| catchsql {INSERT INTO t1 VALUES(1,3,4);} |
| } {1 {UNIQUE constraint failed: t1.a}} |
| do_test schema5-1.3 { |
| db eval { |
| DROP TABLE t1; |
| CREATE TABLE t1(a,b,c, |
| CONSTRAINT one PRIMARY KEY(a) CONSTRAINT two CHECK(b<10) UNIQUE(b) |
| CONSTRAINT three |
| ); |
| INSERT INTO t1 VALUES(1,2,3); |
| SELECT * FROM t1; |
| } |
| } {1 2 3} |
| do_test schema5-1.4 { |
| catchsql {INSERT INTO t1 VALUES(10,11,12);} |
| } {1 {CHECK constraint failed: two}} |
| do_test schema5-1.5 { |
| db eval { |
| DROP TABLE t1; |
| CREATE TABLE t1(a,b,c, |
| UNIQUE(a) CONSTRAINT one, |
| PRIMARY KEY(b,c) CONSTRAINT two |
| ); |
| INSERT INTO t1 VALUES(1,2,3); |
| } |
| } {} |
| do_test schema5-1.6 { |
| catchsql {INSERT INTO t1 VALUES(1,3,4)} |
| } {1 {UNIQUE constraint failed: t1.a}} |
| do_test schema5-1.7 { |
| catchsql {INSERT INTO t1 VALUES(10,2,3)} |
| } {1 {UNIQUE constraint failed: t1.b, t1.c}} |
| |
| |
| |
| |
| |
| finish_test |