Add new file e_createtable.test.
FossilOrigin-Name: 20e16fef55c355a1d7e97d0c390769b941e83fdb
This commit is contained in:
parent
e8b0c9b4ee
commit
42825cd215
25
manifest
25
manifest
@ -1,8 +1,5 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
C Do\snot\scall\sgethostuuid()\son\sMacOS\s10.4\sand\searlier,\ssince\sit\sis\snot\nsupported\sthere.
|
||||
D 2010-09-25T14:13:18
|
||||
C Add\snew\sfile\se_createtable.test.
|
||||
D 2010-09-25T17:29:58
|
||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||
F Makefile.in c599a15d268b1db2aeadea19df2adc3bf2eb6bee
|
||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||
@ -351,11 +348,12 @@ F test/descidx2.test 9f1a0c83fd57f8667c82310ca21b30a350888b5d
|
||||
F test/descidx3.test fe720e8b37d59f4cef808b0bf4e1b391c2e56b6f
|
||||
F test/diskfull.test 0cede7ef9d8f415d9d3944005c76be7589bb5ebb
|
||||
F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
|
||||
F test/e_createtable.test 2b3257a5b74a4993574f321fb85f063ce1d38241
|
||||
F test/e_delete.test 55d868b647acc091c261a10b9b0cb0ab660a6acb
|
||||
F test/e_expr.test 164e87c1d7b40ceb47c57c3bffa384c81d009aa7
|
||||
F test/e_fkey.test 6721a741c6499b3ab7e5385923233343c8f1ad05
|
||||
F test/e_fts3.test 75bb0aee26384ef586165e21018a17f7cd843469
|
||||
F test/e_insert.test d6af6e4a305afe1efbc8f0be7b68edc46abc17d8
|
||||
F test/e_insert.test 7390c2da39f16a134dc9a439144768c727757d2c
|
||||
F test/e_reindex.test a064f0878b8f848fbca38f1f61f82f15a3000c64
|
||||
F test/e_select.test 6c0244eacf43bf8406d7ae3363d77265b0d4ff8f
|
||||
F test/e_select2.test 5c3d3da19c7b3e90ae444579db2b70098599ab92
|
||||
@ -869,14 +867,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
|
||||
P eec7dc9192c635335a4a9acc3669afd4b26f02d3
|
||||
R 0e8bdcf793e4dc8e71e78bbd4ff15fee
|
||||
U drh
|
||||
Z 0334baf93c138321128000518775f354
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1.4.6 (GNU/Linux)
|
||||
|
||||
iD8DBQFMngOBoxKgR168RlERAvcOAJ4zR7ZWTqvsewGnEX3opnyqWbw2KgCbBt9d
|
||||
hy4yAdhgPfd7y+2N/GngRag=
|
||||
=2MYR
|
||||
-----END PGP SIGNATURE-----
|
||||
P 44deaaefeeb95827daeaf84aa5e205b456e75b40
|
||||
R f9cdaa74878a8325422c228d4f8c7dbc
|
||||
U dan
|
||||
Z 39756bc936cfb3dbb51046b9bdefa610
|
||||
|
@ -1 +1 @@
|
||||
44deaaefeeb95827daeaf84aa5e205b456e75b40
|
||||
20e16fef55c355a1d7e97d0c390769b941e83fdb
|
311
test/e_createtable.test
Normal file
311
test/e_createtable.test
Normal file
@ -0,0 +1,311 @@
|
||||
# 2010 September 25
|
||||
#
|
||||
# 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 implements tests to verify that the "testable statements" in
|
||||
# the lang_createtable.html document are correct.
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
||||
proc do_createtable_tests {nm args} {
|
||||
uplevel do_select_tests [list e_createtable-$nm] $args
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-25262-01881 -- syntax diagram type-name
|
||||
#
|
||||
do_createtable_tests 0.1.1 -repair {
|
||||
drop_all_tables
|
||||
} {
|
||||
1 "CREATE TABLE t1(c1 one)" {}
|
||||
2 "CREATE TABLE t1(c1 one two)" {}
|
||||
3 "CREATE TABLE t1(c1 one two three)" {}
|
||||
4 "CREATE TABLE t1(c1 one two three four)" {}
|
||||
5 "CREATE TABLE t1(c1 one two three four(14))" {}
|
||||
6 "CREATE TABLE t1(c1 one two three four(14, 22))" {}
|
||||
7 "CREATE TABLE t1(c1 var(+14, -22.3))" {}
|
||||
8 "CREATE TABLE t1(c1 var(1.0e10))" {}
|
||||
}
|
||||
do_createtable_tests 0.1.2 -error {
|
||||
near "%s": syntax error
|
||||
} {
|
||||
1 "CREATE TABLE t1(c1 one(number))" {number}
|
||||
}
|
||||
|
||||
|
||||
# EVIDENCE-OF: R-18762-12428 -- syntax diagram column-constraint
|
||||
#
|
||||
# Note: Not shown in the syntax diagram is the "NULL" constraint. This
|
||||
# is the opposite of "NOT NULL" - it implies that the column may
|
||||
# take a NULL value. This is the default anyway, so this type of
|
||||
# constraint is rarely used.
|
||||
#
|
||||
do_createtable_tests 0.2.1 -repair {
|
||||
drop_all_tables
|
||||
execsql { CREATE TABLE t2(x PRIMARY KEY) }
|
||||
} {
|
||||
1.1 "CREATE TABLE t1(c1 text PRIMARY KEY)" {}
|
||||
1.2 "CREATE TABLE t1(c1 text PRIMARY KEY ASC)" {}
|
||||
1.3 "CREATE TABLE t1(c1 text PRIMARY KEY DESC)" {}
|
||||
1.4 "CREATE TABLE t1(c1 text CONSTRAINT cons PRIMARY KEY DESC)" {}
|
||||
|
||||
2.1 "CREATE TABLE t1(c1 text NOT NULL)" {}
|
||||
2.2 "CREATE TABLE t1(c1 text CONSTRAINT nm NOT NULL)" {}
|
||||
2.3 "CREATE TABLE t1(c1 text NULL)" {}
|
||||
2.4 "CREATE TABLE t1(c1 text CONSTRAINT nm NULL)" {}
|
||||
|
||||
3.1 "CREATE TABLE t1(c1 text UNIQUE)" {}
|
||||
3.2 "CREATE TABLE t1(c1 text CONSTRAINT un UNIQUE)" {}
|
||||
|
||||
4.1 "CREATE TABLE t1(c1 text CHECK(c1!=0))" {}
|
||||
4.2 "CREATE TABLE t1(c1 text CONSTRAINT chk CHECK(c1!=0))" {}
|
||||
|
||||
5.1 "CREATE TABLE t1(c1 text DEFAULT 1)" {}
|
||||
5.2 "CREATE TABLE t1(c1 text DEFAULT -1)" {}
|
||||
5.3 "CREATE TABLE t1(c1 text DEFAULT +1)" {}
|
||||
5.4 "CREATE TABLE t1(c1 text DEFAULT -45.8e22)" {}
|
||||
5.5 "CREATE TABLE t1(c1 text DEFAULT (1+1))" {}
|
||||
5.6 "CREATE TABLE t1(c1 text CONSTRAINT \"1 2\" DEFAULT (1+1))" {}
|
||||
|
||||
6.1 "CREATE TABLE t1(c1 text COLLATE nocase)" {}
|
||||
6.2 "CREATE TABLE t1(c1 text CONSTRAINT 'a x' COLLATE nocase)" {}
|
||||
|
||||
7.1 "CREATE TABLE t1(c1 REFERENCES t2)" {}
|
||||
7.2 "CREATE TABLE t1(c1 CONSTRAINT abc REFERENCES t2)" {}
|
||||
|
||||
8.1 {
|
||||
CREATE TABLE t1(c1
|
||||
PRIMARY KEY NOT NULL UNIQUE CHECK(c1 IS 'ten') DEFAULT 123 REFERENCES t1
|
||||
);
|
||||
} {}
|
||||
8.2 {
|
||||
CREATE TABLE t1(c1
|
||||
REFERENCES t1 DEFAULT 123 CHECK(c1 IS 'ten') UNIQUE NOT NULL PRIMARY KEY
|
||||
);
|
||||
} {}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-17905-31923 -- syntax diagram table-constraint
|
||||
#
|
||||
do_createtable_tests 0.3.1 -repair {
|
||||
drop_all_tables
|
||||
execsql { CREATE TABLE t2(x PRIMARY KEY) }
|
||||
} {
|
||||
1.1 "CREATE TABLE t1(c1, c2, PRIMARY KEY(c1))" {}
|
||||
1.2 "CREATE TABLE t1(c1, c2, PRIMARY KEY(c1, c2))" {}
|
||||
1.3 "CREATE TABLE t1(c1, c2, PRIMARY KEY(c1, c2) ON CONFLICT IGNORE)" {}
|
||||
|
||||
2.1 "CREATE TABLE t1(c1, c2, UNIQUE(c1))" {}
|
||||
2.2 "CREATE TABLE t1(c1, c2, UNIQUE(c1, c2))" {}
|
||||
2.3 "CREATE TABLE t1(c1, c2, UNIQUE(c1, c2) ON CONFLICT IGNORE)" {}
|
||||
|
||||
3.1 "CREATE TABLE t1(c1, c2, CHECK(c1 IS NOT c2))" {}
|
||||
|
||||
4.1 "CREATE TABLE t1(c1, c2, FOREIGN KEY(c1) REFERENCES t2)" {}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-18765-31171 -- syntax diagram column-def
|
||||
#
|
||||
do_createtable_tests 0.4.1 -repair {
|
||||
drop_all_tables
|
||||
} {
|
||||
1 {CREATE TABLE t1(
|
||||
col1,
|
||||
col2 TEXT,
|
||||
col3 INTEGER UNIQUE,
|
||||
col4 VARCHAR(10, 10) PRIMARY KEY,
|
||||
"name with spaces" REFERENCES t1
|
||||
);
|
||||
} {}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-59573-11075 -- syntax diagram create-table-stmt
|
||||
#
|
||||
do_createtable_tests 0.5.1 -repair {
|
||||
drop_all_tables
|
||||
execsql { CREATE TABLE t2(a, b, c) }
|
||||
} {
|
||||
1 "CREATE TABLE t1(a, b, c)" {}
|
||||
2 "CREATE TEMP TABLE t1(a, b, c)" {}
|
||||
3 "CREATE TEMPORARY TABLE t1(a, b, c)" {}
|
||||
4 "CREATE TABLE IF NOT EXISTS t1(a, b, c)" {}
|
||||
5 "CREATE TEMP TABLE IF NOT EXISTS t1(a, b, c)" {}
|
||||
6 "CREATE TEMPORARY TABLE IF NOT EXISTS t1(a, b, c)" {}
|
||||
|
||||
7 "CREATE TABLE main.t1(a, b, c)" {}
|
||||
8 "CREATE TEMP TABLE temp.t1(a, b, c)" {}
|
||||
9 "CREATE TEMPORARY TABLE temp.t1(a, b, c)" {}
|
||||
10 "CREATE TABLE IF NOT EXISTS main.t1(a, b, c)" {}
|
||||
11 "CREATE TEMP TABLE IF NOT EXISTS temp.t1(a, b, c)" {}
|
||||
12 "CREATE TEMPORARY TABLE IF NOT EXISTS temp.t1(a, b, c)" {}
|
||||
|
||||
13 "CREATE TABLE t1 AS SELECT * FROM t2" {}
|
||||
14 "CREATE TEMP TABLE t1 AS SELECT c, b, a FROM t2" {}
|
||||
15 "CREATE TABLE t1 AS SELECT count(*), max(b), min(a) FROM t2" {}
|
||||
}
|
||||
|
||||
# EVIDENCE-OF: R-32138-02228 -- syntax diagram foreign-key-clause
|
||||
#
|
||||
# 1: Explicit parent-key columns.
|
||||
# 2: Implicit child-key columns.
|
||||
#
|
||||
# 1: MATCH FULL
|
||||
# 2: MATCH PARTIAL
|
||||
# 3: MATCH SIMPLE
|
||||
# 4: MATCH STICK
|
||||
# 5:
|
||||
#
|
||||
# 1: ON DELETE SET NULL
|
||||
# 2: ON DELETE SET DEFAULT
|
||||
# 3: ON DELETE CASCADE
|
||||
# 4: ON DELETE RESTRICT
|
||||
# 5: ON DELETE NO ACTION
|
||||
# 6:
|
||||
#
|
||||
# 1: ON UPDATE SET NULL
|
||||
# 2: ON UPDATE SET DEFAULT
|
||||
# 3: ON UPDATE CASCADE
|
||||
# 4: ON UPDATE RESTRICT
|
||||
# 5: ON UPDATE NO ACTION
|
||||
# 6:
|
||||
#
|
||||
# 1: NOT DEFERRABLE INITIALLY DEFERRED
|
||||
# 2: NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
# 3: NOT DEFERRABLE
|
||||
# 4: DEFERRABLE INITIALLY DEFERRED
|
||||
# 5: DEFERRABLE INITIALLY IMMEDIATE
|
||||
# 6: DEFERRABLE
|
||||
# 7:
|
||||
#
|
||||
do_createtable_tests 0.6.1 -repair {
|
||||
drop_all_tables
|
||||
execsql { CREATE TABLE t2(x PRIMARY KEY, y) }
|
||||
execsql { CREATE TABLE t3(i, j, UNIQUE(i, j) ) }
|
||||
} {
|
||||
11146 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH FULL
|
||||
ON DELETE SET NULL ON UPDATE RESTRICT DEFERRABLE
|
||||
)} {}
|
||||
11412 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x)
|
||||
ON DELETE RESTRICT ON UPDATE SET NULL MATCH FULL
|
||||
NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
12135 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH PARTIAL
|
||||
ON DELETE SET NULL ON UPDATE CASCADE DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
12427 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH PARTIAL
|
||||
ON DELETE RESTRICT ON UPDATE SET DEFAULT
|
||||
)} {}
|
||||
12446 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH PARTIAL
|
||||
ON DELETE RESTRICT ON UPDATE RESTRICT DEFERRABLE
|
||||
)} {}
|
||||
12522 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH PARTIAL
|
||||
ON DELETE NO ACTION ON UPDATE SET DEFAULT NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
13133 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE SET NULL ON UPDATE CASCADE NOT DEFERRABLE
|
||||
)} {}
|
||||
13216 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE SET DEFAULT ON UPDATE SET NULL DEFERRABLE
|
||||
)} {}
|
||||
13263 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE SET DEFAULT NOT DEFERRABLE
|
||||
)} {}
|
||||
13421 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE RESTRICT ON UPDATE SET DEFAULT NOT DEFERRABLE INITIALLY DEFERRED
|
||||
)} {}
|
||||
13432 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE RESTRICT ON UPDATE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
13523 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH SIMPLE
|
||||
ON DELETE NO ACTION ON UPDATE SET DEFAULT NOT DEFERRABLE
|
||||
)} {}
|
||||
14336 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH STICK
|
||||
ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE
|
||||
)} {}
|
||||
14611 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) MATCH STICK
|
||||
ON UPDATE SET NULL NOT DEFERRABLE INITIALLY DEFERRED
|
||||
)} {}
|
||||
15155 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x)
|
||||
ON DELETE SET NULL ON UPDATE NO ACTION DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
15453 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) ON DELETE RESTRICT ON UPDATE NO ACTION NOT DEFERRABLE
|
||||
)} {}
|
||||
15661 { CREATE TABLE t1(a
|
||||
REFERENCES t2(x) NOT DEFERRABLE INITIALLY DEFERRED
|
||||
)} {}
|
||||
21115 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH FULL
|
||||
ON DELETE SET NULL ON UPDATE SET NULL DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
21123 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH FULL
|
||||
ON DELETE SET NULL ON UPDATE SET DEFAULT NOT DEFERRABLE
|
||||
)} {}
|
||||
21217 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH FULL ON DELETE SET DEFAULT ON UPDATE SET NULL
|
||||
)} {}
|
||||
21362 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH FULL
|
||||
ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
22143 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH PARTIAL
|
||||
ON DELETE SET NULL ON UPDATE RESTRICT NOT DEFERRABLE
|
||||
)} {}
|
||||
22156 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH PARTIAL
|
||||
ON DELETE SET NULL ON UPDATE NO ACTION DEFERRABLE
|
||||
)} {}
|
||||
22327 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH PARTIAL ON DELETE CASCADE ON UPDATE SET DEFAULT
|
||||
)} {}
|
||||
22663 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH PARTIAL NOT DEFERRABLE
|
||||
)} {}
|
||||
23236 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH SIMPLE
|
||||
ON DELETE SET DEFAULT ON UPDATE CASCADE DEFERRABLE
|
||||
)} {}
|
||||
24155 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH STICK
|
||||
ON DELETE SET NULL ON UPDATE NO ACTION DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
24522 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH STICK
|
||||
ON DELETE NO ACTION ON UPDATE SET DEFAULT NOT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
24625 { CREATE TABLE t1(a
|
||||
REFERENCES t2 MATCH STICK
|
||||
ON UPDATE SET DEFAULT DEFERRABLE INITIALLY IMMEDIATE
|
||||
)} {}
|
||||
25454 { CREATE TABLE t1(a
|
||||
REFERENCES t2
|
||||
ON DELETE RESTRICT ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED
|
||||
)} {}
|
||||
}
|
||||
|
||||
finish_test
|
@ -9,8 +9,11 @@
|
||||
#
|
||||
#***********************************************************************
|
||||
#
|
||||
# This file implements tests to verify that the "testable statements" in
|
||||
# the lang_insert.html document are correct.
|
||||
# The majority of this file implements tests to verify that the "testable
|
||||
# statements" in the lang_insert.html document are correct.
|
||||
#
|
||||
# Also, it contains tests to verify the statements in (the very short)
|
||||
# lang_replace.html.
|
||||
#
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -331,6 +334,13 @@ do_insert_tests e_insert-3.2 {
|
||||
# The two requirements above are tested by e_select-4.1.* and
|
||||
# e_select-4.2.*, respectively.
|
||||
#
|
||||
# EVIDENCE-OF: R-03421-22330 The REPLACE command is an alias for the
|
||||
# "INSERT OR REPLACE" variant of the INSERT command.
|
||||
#
|
||||
# This is a dup of R-23110-47146. Therefore it is also verified
|
||||
# by e_select-4.2.*. This requirement is the only one from
|
||||
# lang_replace.html.
|
||||
#
|
||||
do_execsql_test e_insert-4.1.0 {
|
||||
INSERT INTO a4 VALUES(1, 'a');
|
||||
INSERT INTO a4 VALUES(2, 'a');
|
||||
|
Loading…
Reference in New Issue
Block a user