]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Updates to requirements marks. No changes to code.
authordrh <drh@noemail.net>
Sat, 9 Nov 2013 19:47:15 +0000 (19:47 +0000)
committerdrh <drh@noemail.net>
Sat, 9 Nov 2013 19:47:15 +0000 (19:47 +0000)
FossilOrigin-Name: 8a0366285b94dc43d932736e7b1eedb71e241857

manifest
manifest.uuid
src/func.c
test/e_createtable.test

index 27bc758d0d4ca14a0614395f42cc775a11c31de0..022cd5679ed5120b358fd632f3200d982f4ddf82 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Throw\san\serror\sif\sAUTOINCREMENT\sappears\sin\sa\sWITHOUT\sROWID\stable.\s\s\nUpdates\sto\sAPI\sdocumentation\sto\sdiscuss\sWITHOUT\sROWID.
-D 2013-11-09T18:15:35.427
+C Updates\sto\srequirements\smarks.\s\sNo\schanges\sto\scode.
+D 2013-11-09T19:47:15.808
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in d12e4455cf7a36e42d3949876c1c3b88ff70867a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -177,7 +177,7 @@ F src/delete.c ddb92f44595366c4817e576b5f11cad5a915c3ef
 F src/expr.c e7bbe3c6916e141f27a28655d3cf325b817695e4
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c 78364daed38e26269c53ddb94c515bceac1063c6
-F src/func.c 2c47b65e6e00e3e9374942f28254faf8adafe398
+F src/func.c 96caa9dfd1febf9a4b720de4c43ccfb392a52b73
 F src/global.c 5caf4deab621abb45b4c607aad1bd21c20aac759
 F src/hash.c ac3470bbf1ca4ae4e306a8ecb0fdf1731810ffe4
 F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
@@ -431,7 +431,7 @@ F test/descidx3.test 09ddbe3f5295f482d2f8b687cf6db8bad7acd9a2
 F test/diskfull.test 106391384780753ea6896b7b4f005d10e9866b6e
 F test/distinct.test 44028aaf161a5e80a2f229622b3a174d3b352810
 F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376
-F test/e_createtable.test f1d21fa142391917b1fa84cf985ac6c63dfcbe4d
+F test/e_createtable.test 3b453432cd14a12732ee9467597d2274ca37ce36
 F test/e_delete.test d5186e2f5478b659f16a2c8b66c09892823e542a
 F test/e_droptrigger.test 3cd080807622c13e5bbb61fc9a57bd7754da2412
 F test/e_dropview.test 0c9f7f60989164a70a67a9d9c26d1083bc808306
@@ -1135,7 +1135,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P 0077c0772a884b54d81fa3733aac6f0c364ef1a8
-R 563b03556821aa7157a2f09d27059ceb
+P b1abb2b078d1cb9ec5fbd7f98221914b93632e9f
+R aea40f11c282f7222fc2eec8280533e7
 U drh
-Z 70e0a7dbdf3eec5dcb68edfd8a49c4f3
+Z 2a612035828de77b6077cfc0ffcba71e
index b3f5c9c136c4d585c67c2b6ad464ce9a37cce376..7db13c15d5938013faf11be3fd7e56e92caac5e0 100644 (file)
@@ -1 +1 @@
-b1abb2b078d1cb9ec5fbd7f98221914b93632e9f
\ No newline at end of file
+8a0366285b94dc43d932736e7b1eedb71e241857
\ No newline at end of file
index e2ab68f0303c8a03eec2377e660c864b25d75cfe..c9962f6d91bc178aba77566593ff1e1e2ed3f289 100644 (file)
@@ -138,8 +138,8 @@ static void absFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
       i64 iVal = sqlite3_value_int64(argv[0]);
       if( iVal<0 ){
         if( (iVal<<1)==0 ){
-          /* IMP: R-35460-15084 If X is the integer -9223372036854775807 then
-          ** abs(X) throws an integer overflow error since there is no
+          /* IMP: R-31676-45509 If X is the integer -9223372036854775808
+          ** then abs(X) throws an integer overflow error since there is no
           ** equivalent positive 64-bit two complement value. */
           sqlite3_result_error(context, "integer overflow", -1);
           return;
index 6fef5e3c4227233fa20b4acd50843f2a00fc8445..8b57c739715b38015a80958470f3794c3bdeac4b 100644 (file)
@@ -1103,8 +1103,8 @@ do_catchsql_test e_createtable-3.11.5 {
 # EVIDENCE-OF: R-52382-54248 Each table in SQLite may have at most one
 # PRIMARY KEY.
 # 
-# EVIDENCE-OF: R-18080-47271 If there is more than one PRIMARY KEY
-# clause in a single CREATE TABLE statement, it is an error.
+# EVIDENCE-OF: R-62315-57691 An error is rasied if more than one PRIMARY
+# KEY clause appears in a CREATE TABLE statement.
 #
 #     To test the two above, show that zero primary keys is Ok, one primary
 #     key is Ok, and two or more primary keys is an error.
@@ -1127,6 +1127,17 @@ do_createtable_tests 4.1.2 -error {
   6    "CREATE TABLE t5(a INTEGER PRIMARY KEY, b, c, PRIMARY KEY(a))"    {}
 }
 
+# EVIDENCE-OF: R-54755-39291 The PRIMARY KEY is optional for ordinary
+# tables but is required for WITHOUT ROWID tables.
+#
+do_catchsql_test 4.1.3 {
+  CREATE TABLE t6(a, b); --ok
+} {0 {}}
+do_catchsql_test 4.1.4 {
+  CREATE TABLE t7(a, b) WITHOUT ROWID; --Error, no PRIMARY KEY
+} {1 {PRIMARY KEY missing on table t7}}
+
+
 proc table_pk {tbl} { 
   set pk [list]
   db eval "pragma table_info($tbl)" a {
@@ -1160,8 +1171,8 @@ do_createtable_tests 4.2 -repair {
   2.3    "CREATE TABLE t5(a, b INTEGER PRIMARY KEY, c)"       {b}
 }
 
-# EVIDENCE-OF: R-33986-09410 Each row in a table with a primary key must
-# feature a unique combination of values in its primary key columns.
+# EVIDENCE-OF: R-59124-61339 Each row in a table with a primary key must
+# have a unique combination of values in its primary key columns.
 #
 # EVIDENCE-OF: R-39102-06737 If an INSERT or UPDATE statement attempts
 # to modify the table content so that two or more rows feature identical
@@ -1252,8 +1263,9 @@ do_createtable_tests 4.4 {
   14   "INSERT INTO t2 VALUES(NULL, NULL)"           {}
 }
 
-# EVIDENCE-OF: R-61866-38053 Unless the column is an INTEGER PRIMARY KEY
-# SQLite allows NULL values in a PRIMARY KEY column.
+# EVIDENCE-OF: R-35113-43214 Unless the column is an INTEGER PRIMARY KEY
+# or the table is a WITHOUT ROWID table or the column is declared NOT
+# NULL, SQLite allows NULL values in a PRIMARY KEY column.
 #
 #     If the column is an integer primary key, attempting to insert a NULL
 #     into the column triggers the auto-increment behavior. Attempting
@@ -1275,6 +1287,14 @@ do_catchsql_test 4.5.3 {
   INSERT INTO t3 VALUES(2, 5, 3);
   UPDATE t3 SET u = NULL WHERE s = 2;
 } {1 {datatype mismatch}}
+do_catchsql_test 4.5.4 {
+  CREATE TABLE t4(s, u INT PRIMARY KEY, v) WITHOUT ROWID;
+  INSERT INTO t4 VALUES(1, NULL, 2);
+} {1 {NOT NULL constraint failed: t4.u}}
+do_catchsql_test 4.5.5 {
+  CREATE TABLE t5(s, u INT PRIMARY KEY NOT NULL, v);
+  INSERT INTO t5 VALUES(1, NULL, 2);
+} {1 {NOT NULL constraint failed: t5.u}}
 
 # EVIDENCE-OF: R-00227-21080 A UNIQUE constraint is similar to a PRIMARY
 # KEY constraint, except that a single table may have any number of
@@ -1288,14 +1308,12 @@ do_createtable_tests 4.6 {
   4    "CREATE TABLE t4(a, b, c, UNIQUE(a, b, c))"                 {}
 }
 
-# EVIDENCE-OF: R-55240-58877 For each UNIQUE constraint on the table,
-# each row must feature a unique combination of values in the columns
+# EVIDENCE-OF: R-30981-64168 For each UNIQUE constraint on the table,
+# each row must contain a unique combination of values in the columns
 # identified by the UNIQUE constraint.
 #
-# EVIDENCE-OF: R-47733-51480 If an INSERT or UPDATE statement attempts
-# to modify the table content so that two or more rows feature identical
-# values in a set of columns that are subject to a UNIQUE constraint, it
-# is a constraint violation.
+# EVIDENCE-OF: R-59124-61339 Each row in a table with a primary key must
+# have a unique combination of values in its primary key columns.
 #
 do_execsql_test 4.7.0 {
   INSERT INTO t1 VALUES(1, 2);
@@ -1327,9 +1345,9 @@ do_createtable_tests 4.7.1 -error {UNIQUE constraint failed: %s} {
   14   "UPDATE t4 SET a=0, b=0, c=0"                 {{t4.a, t4.b, t4.c}}
 }
 
-# EVIDENCE-OF: R-21289-11559 As with PRIMARY KEY constraints, for the
-# purposes of UNIQUE constraints NULL values are considered distinct
-# from all other values (including other NULLs).
+# EVIDENCE-OF: R-00404-17670 For the purposes of UNIQUE constraints,
+# NULL values are considered distinct from all other values, including
+# other NULLs.
 #
 do_createtable_tests 4.8 {
   1    "INSERT INTO t1 VALUES(NULL, NULL)"           {}
@@ -1344,10 +1362,9 @@ do_createtable_tests 4.8 {
   9    "UPDATE t4 SET c = NULL"                      {}
 }
 
-# EVIDENCE-OF: R-26983-26377 INTEGER PRIMARY KEY columns aside, both
-# UNIQUE and PRIMARY KEY constraints are implemented by creating an
-# index in the database (in the same way as a "CREATE UNIQUE INDEX"
-# statement would).
+# EVIDENCE-OF: R-55820-29984 In most cases, UNIQUE and PRIMARY KEY
+# constraints are implemented by creating a unique index in the
+# database.
 do_createtable_tests 4.9 -repair drop_all_tables -query {
   SELECT count(*) FROM sqlite_master WHERE type='index'
 } {
@@ -1358,7 +1375,7 @@ do_createtable_tests 4.9 -repair drop_all_tables -query {
   5    "CREATE TABLE t1(a PRIMARY KEY, b, c, UNIQUE(c, b))"  2
 }
 
-# EVIDENCE-OF: R-02252-33116 Such an index is used like any other index
+# Obsolete: R-02252-33116 Such an index is used like any other index
 # in the database to optimize queries.
 #
 do_execsql_test 4.10.0 {
@@ -1695,10 +1712,10 @@ proc is_integer_primary_key {tbl col} {
   }]] 0
 }
 
-# EVIDENCE-OF: R-53738-31673 With one exception, if a table has a
-# primary key that consists of a single column, and the declared type of
-# that column is "INTEGER" in any mixture of upper and lower case, then
-# the column becomes an alias for the rowid.
+# EVIDENCE-OF: R-47901-33947 With one exception noted below, if a rowid
+# table has a primary key that consists of a single column and the
+# declared type of that column is "INTEGER" in any mixture of upper and
+# lower case, then the column becomes an alias for the rowid.
 #
 # EVIDENCE-OF: R-45951-08347 if the declaration of a column with
 # declared type "INTEGER" includes an "PRIMARY KEY DESC" clause, it does