diff options
author | drh <drh@noemail.net> | 2015-04-15 05:20:44 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-04-15 05:20:44 +0000 |
commit | 1978d171cb1f64765b18c81ad3d8bde62c2d434c (patch) | |
tree | 98a11c7ff69e45875466c11eb3a55466ced07026 | |
parent | 0ec68f845c1ab87995f8956c2617c7017809a963 (diff) | |
download | sqlite-1978d171cb1f64765b18c81ad3d8bde62c2d434c.tar.gz sqlite-1978d171cb1f64765b18c81ad3d8bde62c2d434c.zip |
When adding the implied "LIMIT 1" to the end of a scalar subquery, make sure
that subquery is not a VALUES-only query as such queries cannot deal with
LIMIT clauses.
FossilOrigin-Name: 7c27310bdf6b4af44a0811a2787ed64966d720d2
-rw-r--r-- | manifest | 14 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/expr.c | 1 | ||||
-rw-r--r-- | test/select4.test | 7 |
4 files changed, 16 insertions, 8 deletions
@@ -1,5 +1,5 @@ -C When\sdoing\sthe\s(dubious)\sconversion\sof\sdouble-quoted\sidentifier\sinto\sstring\nliteral\sfor\sMySQL\scompatibility,\sbe\ssure\sto\salso\sclear\sthe\siTable\svalue\sfrom\nthe\sExpr\sentry\sto\savoid\san\sassert. -D 2015-04-15T04:51:28.676 +C When\sadding\sthe\simplied\s"LIMIT\s1"\sto\sthe\send\sof\sa\sscalar\ssubquery,\smake\ssure\nthat\ssubquery\sis\snot\sa\sVALUES-only\squery\sas\ssuch\squeries\scannot\sdeal\swith\nLIMIT\sclauses. +D 2015-04-15T05:20:44.109 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5f78b1ab81b64e7c57a75d170832443e66c0880a F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -182,7 +182,7 @@ F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575 F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887 F src/date.c e4d50b3283696836ec1036b695ead9a19e37a5ac F src/delete.c 37964e6c1d73ff49cbea9ff690c9605fb15f600e -F src/expr.c aba4f0547aac1fcbd965d548ab2e36efd5a4481c +F src/expr.c 8800584340a9b4f4c0ca55c360de751c6da0b11a F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 3343d551a8d810782257244fb33f2ce191493c39 F src/func.c 1414c24c873c48796ad45942257a179a423ba42f @@ -839,7 +839,7 @@ F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5 F test/select1.test fc2a61f226a649393664ad54bc5376631801517c F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56 F test/select3.test 2ce595f8fb8e2ac10071d3b4e424cadd4634a054 -F test/select4.test e20e8ce47b558de80616102ef273704cf0d48a3b +F test/select4.test af938bb5f55c6f3925047fc7cd837c894566f5db F test/select5.test e758b8ef94f69b111df4cb819008856655dcd535 F test/select6.test 39eac4a5c03650b2b473c532882273283ee8b7a0 F test/select7.test 7fd2ef598cfabb6b9ff6ac13973b91d0527df49d @@ -1250,7 +1250,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 3872742591add4e94033484c2844e7d7ab69674b -R 3d936303913ff5357294410059be6467 +P d7211b68107ea669de39e0aa81a1be40901e1487 +R 880c9defd1fb09406a80bcc7ed2c9c3e U drh -Z adb676b9f25e7eed8c83dbf9762c49f4 +Z 868124641765b45b984dc6b337325865 diff --git a/manifest.uuid b/manifest.uuid index f2359bbae..783f8ed72 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d7211b68107ea669de39e0aa81a1be40901e1487
\ No newline at end of file +7c27310bdf6b4af44a0811a2787ed64966d720d2
\ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 6a30755aa..77eb35aa7 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2016,6 +2016,7 @@ int sqlite3CodeSubselect( pSel->pLimit = sqlite3PExpr(pParse, TK_INTEGER, 0, 0, &sqlite3IntTokens[1]); pSel->iLimit = 0; + pSel->selFlags &= ~SF_AllValues; if( sqlite3Select(pParse, pSel, &dest) ){ return 0; } diff --git a/test/select4.test b/test/select4.test index 47a44081f..71171def3 100644 --- a/test/select4.test +++ b/test/select4.test @@ -863,5 +863,12 @@ do_execsql_test select4-14.8 { do_execsql_test select4-14.9 { SELECT * FROM t14 UNION ALL VALUES(3,2,1),(2,3,1),(1,2,3),(2,1,3); } {1 2 3 4 5 6 3 2 1 2 3 1 1 2 3 2 1 3} +do_execsql_test select4-14.10 { + SELECT (VALUES(1),(2),(3),(4)) +} {1} +do_execsql_test select4-14.11 { + SELECT (SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) +} {1} + finish_test |