]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not allow rowid in a UNIQUE or PRIMARY KEY constraint. (This restores the
authordrh <drh@noemail.net>
Sat, 19 Sep 2015 03:07:30 +0000 (03:07 +0000)
committerdrh <drh@noemail.net>
Sat, 19 Sep 2015 03:07:30 +0000 (03:07 +0000)
same behavior exhibited by all prior releases.)

FossilOrigin-Name: b1278301e37220a075c1bae88c0fcca2ef7a7d5c

manifest
manifest.uuid
src/resolve.c
test/unique2.test
test/without_rowid6.test

index a6faf8df5588c6c9158262c9da479b24af66fd75..d338183a1627c7bfad95b41f1cd573b140648714 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\scrash\sthat\scan\soccur\swith\sa\sskip-scan\son\san\sindex\swith\nexpressions\swhen\sSQLITE_ENABLE_EXPLAIN_COMMENTS\sis\sdefined.
-D 2015-09-18T18:09:28.498
+C Do\snot\sallow\srowid\sin\sa\sUNIQUE\sor\sPRIMARY\sKEY\sconstraint.\s\s(This\srestores\sthe\nsame\sbehavior\sexhibited\sby\sall\sprior\sreleases.)
+D 2015-09-19T03:07:30.685
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in f85066ce844a28b671aaeeff320921cd0ce36239
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -338,7 +338,7 @@ F src/pragma.h 631a91c8b0e6ca8f051a1d8a4a0da4150e04620a
 F src/prepare.c 82e5db1013846a819f198336fed72c44c974e7b1
 F src/printf.c 0c4bcdd1c2e2521024f0a69cb5eb334f86b3652a
 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
-F src/resolve.c 3126f7694b8ce0f97282d7dd3a5198b8fa18dce9
+F src/resolve.c 1954a0f01bf65d78d7d559aea3d5c67f33376d91
 F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
 F src/select.c c17613385bc6b095c421b1f30548814f5fd8a9b2
 F src/shell.c 6332ef06db1390ef812cfdff1fc97b4fd76cdd42
@@ -1234,7 +1234,7 @@ F test/types.test bf816ce73c7dfcfe26b700c19f97ef4050d194ff
 F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84
 F test/types3.test 99e009491a54f4dc02c06bdbc0c5eea56ae3e25a
 F test/unique.test 93f8b2ef5ea51b9495f8d6493429b1fd0f465264
-F test/unique2.test 41e7f83c6827605991160a31380148a9fc5f1339
+F test/unique2.test 3674e9f2a3f1fbbfd4772ac74b7a97090d0f77d2
 F test/unixexcl.test cd6c765f75e50e8e2c2ba763149e5d340ea19825
 F test/unordered.test ca7adce0419e4ca0c50f039885e76ed2c531eda8
 F test/update.test 6c68446b8a0a33d522a7c72b320934596a2d7d32
@@ -1327,7 +1327,7 @@ F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
 F test/without_rowid3.test aad4f9d383e199349b6c7e508a778f7dff5dff79
 F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
 F test/without_rowid5.test 61256715b686359df48ca1742db50cc7e3e7b862
-F test/without_rowid6.test db0dbf03c49030aa3c1ba5f618620334bd2baf5f
+F test/without_rowid6.test 1f99644e6508447fb050f73697350c7ceca3392e
 F test/wordcount.c 9915e06cb33d8ca8109b8700791afe80d305afda
 F test/zeroblob.test 3857870fe681b8185654414a9bccfde80b62a0fa
 F test/zerodamage.test cf6748bad89553cc1632be51a6f54e487e4039ac
@@ -1387,7 +1387,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 09a313fb7f2c16b0253a439edb901a7bb201d7d3
-R e6b57e21ee9c6a029f06101550146ce6
+P 25f34cb9b576a2d4250a06a7dbf88010b1c11675
+R fd8d20dd4f43b078e61007ad89d6a2fb
 U drh
-Z 350cadf296cf903d8bdd5c50cd6dd61e
+Z 9e371c3a4b995f769acecd4879783adf
index 63439ffff1a74ff54002e8dd2b75091bb6f8e6d0..de66c0e978843547137f33cfc266a27f84f86fbd 100644 (file)
@@ -1 +1 @@
-25f34cb9b576a2d4250a06a7dbf88010b1c11675
\ No newline at end of file
+b1278301e37220a075c1bae88c0fcca2ef7a7d5c
\ No newline at end of file
index 2c4212ba7d0e5b9a6c53319211af59f99627c357..ac1706b595711372c2e1f8f3f90d68a979c683f6 100644 (file)
@@ -355,8 +355,13 @@ static int lookupName(
     /*
     ** Perhaps the name is a reference to the ROWID
     */
-    if( cnt==0 && cntTab==1 && pMatch && sqlite3IsRowid(zCol)
-     && VisibleRowid(pMatch->pTab) ){
+    if( cnt==0
+     && cntTab==1
+     && pMatch
+     && (pNC->ncFlags & NC_IdxExpr)==0
+     && sqlite3IsRowid(zCol)
+     && VisibleRowid(pMatch->pTab)
+    ){
       cnt = 1;
       pExpr->iColumn = -1;     /* IMP: R-44911-55124 */
       pExpr->affinity = SQLITE_AFF_INTEGER;
index 6a320d4d7dfe0fa1b2769035d4a1cdee95724cc9..0ec0dd3db2d7c355c36e6088f2620ab132577256 100644 (file)
@@ -75,4 +75,12 @@ foreach {id sql} {
   } {1 {UNIQUE constraint failed: t1.y, t1.z}}
 }
 
+do_catchsql_test 13.1 {
+  CREATE TABLE err1(a,b,c,UNIQUE(rowid));
+} {1 {no such column: rowid}}
+do_catchsql_test 13.2 {
+  CREATE TABLE err1(a,b,c,PRIMARY KEY(rowid));
+} {1 {no such column: rowid}}
+
+
 finish_test
index 8ca78ba63a981768667edbccac946c7c7801cf35..3f9fe415d87bdd0ec8641abbe1013b2682888b22 100644 (file)
@@ -113,5 +113,9 @@ do_execsql_test without_rowid6-520 {
   PRAGMA index_list(t1);
 } {/sqlite_autoindex_t1_1 1 pk/}
 
+do_catchsql_test without_rowid6-600 {
+  CREATE TABLE t6(a,b,c,PRIMARY KEY(a,rowid,b))WITHOUT ROWID;
+} {1 {no such column: rowid}}
+
 
 finish_test