]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure "rowid" columns are correctly resolved in joins between normal
authordrh <drh@noemail.net>
Wed, 12 Feb 2014 14:43:52 +0000 (14:43 +0000)
committerdrh <drh@noemail.net>
Wed, 12 Feb 2014 14:43:52 +0000 (14:43 +0000)
tables and WITHOUT ROWID tables.  Fix for ticket [c34d0557f740c45070].

FossilOrigin-Name: 5d01426ddfb2d47c57f93f71378594e637424be0

manifest
manifest.uuid
src/resolve.c
test/without_rowid1.test

index 19a6fafab1cded000323903998c0c260ceb71a82..e5839e439dc9b15e3c0b4557de73cf528e6865ed 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Increase\sthe\sversion\snumber\sto\s3.8.4
-D 2014-02-11T16:24:34.448
+C Make\ssure\s"rowid"\scolumns\sare\scorrectly\sresolved\sin\sjoins\sbetween\snormal\ntables\sand\sWITHOUT\sROWID\stables.\s\sFix\sfor\sticket\s[c34d0557f740c45070].
+D 2014-02-12T14:43:52.953
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -217,7 +217,7 @@ F src/pragma.c ed409ce4104cf4d9de6ead40ace70974f124853b
 F src/prepare.c 677521ab7132615a8a26107a1d1c3132f44ae337
 F src/printf.c 85d07756e45d7496d19439dcae3e6e9e0090f269
 F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
-F src/resolve.c 7eda9097b29fcf3d2b42fdc17d1de672134e09b6
+F src/resolve.c ca8b99d894164435f5c55cb304c1b8121705c51e
 F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
 F src/select.c 50961f0d0ab8f2d45ff29ec5f91d8db221330ca7
 F src/shell.c 3dd86bf73ccd079f0e32ef5069600586085e8239
@@ -1096,7 +1096,7 @@ F test/win32longpath.test 169c75a3b2e43481f4a62122510210c67b08f26d
 F test/with1.test 268081a6b14817a262ced4d0ee34d4d2a1dd2068
 F test/with2.test 2fe78fcd8deef2a0f9cfc49bfc755911d0b3fd64
 F test/withM.test e97f2a8c506ab3ea9eab94e6f6072f6cc924c991
-F test/without_rowid1.test aaa26da19d543cd8d3d2d0e686dfa255556c15c8
+F test/without_rowid1.test e00a0a9dc9f0be651f011d61e8a32b7add5afb30
 F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
 F test/without_rowid3.test eac3d5c8a1924725b58503a368f2cbd24fd6c8a0
 F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
@@ -1153,7 +1153,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P f5ad1e1bf2828c5da70c1ff944d8212036142e6f
-R 07c665af95e97929880dcb47f3f495f9
+P 0a8bcbbd4e11a60923736b2be9b1ce83ea2263fb
+R ece7306a4645e7a68a79bfe14ec94970
 U drh
-Z 585a1fb26982d5587e4e3f114773e866
+Z 89db972fa80a38407f6b56a44d53bf78
index a4c42c8f7f3d962e8f9044cc6ee882889424743e..564e92ae29de578d4f52b86d7fbaa567ed431928 100644 (file)
@@ -1 +1 @@
-0a8bcbbd4e11a60923736b2be9b1ce83ea2263fb
\ No newline at end of file
+5d01426ddfb2d47c57f93f71378594e637424be0
\ No newline at end of file
index b0adb86295dfe97292f582c3d69000995b241ad2..07e0e919a5fc8213b9242a83fbc67cda007ac0dd 100644 (file)
@@ -380,8 +380,8 @@ static int lookupName(
     /*
     ** Perhaps the name is a reference to the ROWID
     */
-    assert( pTab!=0 || cntTab==0 );
-    if( cnt==0 && cntTab==1 && sqlite3IsRowid(zCol) && HasRowid(pTab) ){
+    if( cnt==0 && cntTab==1 && pMatch && sqlite3IsRowid(zCol)
+     && HasRowid(pMatch->pTab) ){
       cnt = 1;
       pExpr->iColumn = -1;     /* IMP: R-44911-55124 */
       pExpr->affinity = SQLITE_AFF_INTEGER;
index 1a53d26e666e76aa4402100e7227bff03a672bfe..bdd03c57bbc086e7586138df603503fbd246778c 100644 (file)
@@ -198,6 +198,20 @@ do_execsql_test 3.1.5 {
   INSERT INTO t3 SELECT * FROM t4;
   SELECT * FROM t3;
 } {i ii iii}
+
+############################################################################
+# Ticket [c34d0557f740c450709d6e33df72d4f3f651a3cc]
+# Name resolution issue with WITHOUT ROWID
+#
+do_execsql_test 4.1 {
+  CREATE TABLE t41(a PRIMARY KEY) WITHOUT ROWID;
+  INSERT INTO t41 VALUES('abc');
+  CREATE TABLE t42(x);
+  INSERT INTO t42 VALUES('xyz');
+  SELECT t42.rowid FROM t41, t42;
+} {1}
+do_execsql_test 4.2 {
+  SELECT t42.rowid FROM t42, t41;
+} {1}
   
 finish_test
-