]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add new file e_createtable.test.
authordan <dan@noemail.net>
Sat, 25 Sep 2010 17:29:57 +0000 (17:29 +0000)
committerdan <dan@noemail.net>
Sat, 25 Sep 2010 17:29:57 +0000 (17:29 +0000)
FossilOrigin-Name: 20e16fef55c355a1d7e97d0c390769b941e83fdb

manifest
manifest.uuid
test/e_createtable.test [new file with mode: 0644]
test/e_insert.test

index 76a1aa957152c70c8b0b75eef137585bb0cfbf81..6ade0dd8d21818753db27bfa4d345b0fb765cc42 100644 (file)
--- a/manifest
+++ b/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
index 714e8e709486a330492c977a80f96bfedc0ca6b2..37263b39d62c5084a16714d972833f1e7d689dad 100644 (file)
@@ -1 +1 @@
-44deaaefeeb95827daeaf84aa5e205b456e75b40
\ No newline at end of file
+20e16fef55c355a1d7e97d0c390769b941e83fdb
\ No newline at end of file
diff --git a/test/e_createtable.test b/test/e_createtable.test
new file mode 100644 (file)
index 0000000..3f328b3
--- /dev/null
@@ -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
index 77b97868f7438394c9bcc0807556e7aab870e6c3..2192f2e9fbca73db21075891625ec1bc03014a79 100644 (file)
@@ -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');