]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure extra parentheses around subqueries in the FROM clause are harmless.
authordrh <drh@noemail.net>
Tue, 30 Apr 2013 14:06:57 +0000 (14:06 +0000)
committerdrh <drh@noemail.net>
Tue, 30 Apr 2013 14:06:57 +0000 (14:06 +0000)
Ticket [28c6e830f239ea5].

FossilOrigin-Name: 1c79569226db3d5a73e65a35877635ea8b478866

manifest
manifest.uuid
src/parse.y
test/where8.test

index f3fe09157bfb4f1326e36070a05af8b1c3952dc0..46a1307582f0f21d40622c90a099bae2d4aefaea 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improve\sthe\serror\smessage\sissued\swhen\san\sFTS\squery\sexceeds\sthe\smaximum\sallowable\stree\sdepth.
-D 2013-04-29T18:07:37.241
+C Make\ssure\sextra\sparentheses\saround\ssubqueries\sin\sthe\sFROM\sclause\sare\sharmless.\nTicket\s[28c6e830f239ea5].
+D 2013-04-30T14:06:57.299
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in ce81671efd6223d19d4c8c6b88ac2c4134427111
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -179,7 +179,7 @@ F src/os_unix.c 5a214c5431fd005dbb3b8bbaaa306433e8e9b48f
 F src/os_win.c 673b3e3d1fa3040d8d95a7f1f5e0e553aed56cfb
 F src/pager.c 4a9160d268977e56ae2df90182050ab30fca715d
 F src/pager.h 5cb78b8e1adfd5451e600be7719f5a99d87ac3b1
-F src/parse.y 5d5e12772845805fdfeb889163516b84fbb9ae95
+F src/parse.y 9708365594eea519cdc8504dee425c0a41c79502
 F src/pcache.c f8043b433a57aba85384a531e3937a804432a346
 F src/pcache.h a5e4f5d9f5d592051d91212c5949517971ae6222
 F src/pcache1.c 9fd22671c270b35131ef480bbc00392b8b5f8ab9
@@ -1003,7 +1003,7 @@ F test/where4.test e9b9e2f2f98f00379e6031db6a6fca29bae782a2
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
 F test/where7.test 5c566388f0cc318b0032ce860f4ac5548e3c265a
-F test/where8.test 02619a9bfc6df7b19979a02852bac09c3c99477a
+F test/where8.test d9f889e62dccddb9d790b0c84dfc7861e03a162c
 F test/where8m.test da346596e19d54f0aba35ebade032a7c47d79739
 F test/where9.test 0157862ccf0cfdf1a4622cdf697e5e2f09a8de44
 F test/whereA.test 24c234263c8fe358f079d5e57d884fb569d2da0a
@@ -1060,7 +1060,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P 72ac73189c3577740a77d2ea2fc7118391c0703f
-R 845f7187fab8dee39261b18defdba512
-U dan
-Z 0f3ad9cc69769334523e8cc24ad50e47
+P f480b1fe6012f36c59cd0525efdc6df74143ccd0
+R 741140f0e346ccf75acdb75c67b0b716
+U drh
+Z 1f58c2b83ff706000e8e5b26ed1b3eec
index eb0b27c97e52df51b7f501de3ca4d49b230ef685..b2d3fed83667a097f09491582f3a1ad618c710af 100644 (file)
@@ -1 +1 @@
-f480b1fe6012f36c59cd0525efdc6df74143ccd0
\ No newline at end of file
+1c79569226db3d5a73e65a35877635ea8b478866
\ No newline at end of file
index abc0e7dc080b9c1782657b92d8ea1812a14422ab..8310b26989b05bed1e1b03da80f5c0a52e9ad1d2 100644 (file)
@@ -520,7 +520,9 @@ seltablist(A) ::= stl_prefix(X) nm(Y) dbnm(D) as(Z) indexed_opt(I)
         struct SrcList_item *pOld = F->a;
         pNew->zName = pOld->zName;
         pNew->zDatabase = pOld->zDatabase;
+        pNew->pSelect = pOld->pSelect;
         pOld->zName = pOld->zDatabase = 0;
+        pOld->pSelect = 0;
       }
       sqlite3SrcListDelete(pParse->db, F);
     }else{
index 3bf1790132a292b724b26569da0961b8ad8dd6d6..ae2d04a75d0ba199c2cd5f67e38d06497a0c29c6 100644 (file)
@@ -296,13 +296,27 @@ do_test where8-3.21 {
     SELECT a, d FROM t1, (t2) WHERE (a=d OR b=e) AND a<5 ORDER BY a
   }
 } {1 1 2 2 3 3 4 2 4 4 0 0}
+do_test where8-3.21.1 {
+  execsql_status {
+    SELECT a, d FROM t1, ((t2)) AS t3 WHERE (a=d OR b=e) AND a<5 ORDER BY a
+  }
+} {1 1 2 2 3 3 4 2 4 4 0 0}
+do_test where8-3.21.2 {
+  execsql_status {
+    SELECT a, d FROM t1, ((SELECT * FROM t2)) AS t3 WHERE (a=d OR b=e) AND a<5 ORDER BY a
+  }
+} {1 1 2 2 3 3 4 2 4 4 0 0}
 do_test where8-3.22 {
   execsql_status {
     SELECT a, d FROM ((((((t1))), (((t2))))))
      WHERE (a=d OR b=e) AND a<5 ORDER BY a
   }
 } {1 1 2 2 3 3 4 2 4 4 0 0}
-
+do_test where8-3.23 {
+  execsql_status {
+    SELECT * FROM ((SELECT * FROM t2)) AS t3;
+  }
+} {1 {} I 2 four IV 3 {} IX 4 sixteen XVI 5 {} XXV 6 thirtysix XXXVI 7 fortynine XLIX 8 sixtyeight LXIV 9 eightyone LXXXIX 10 {} C 9 0}
 
 #-----------------------------------------------------------------------
 # The following tests - where8-4.* - verify that adding or removing