]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem that could occur when the RHS of an IN operator was a compound SELECT...
authordan <Dan Kennedy>
Tue, 18 Mar 2025 19:21:04 +0000 (19:21 +0000)
committerdan <Dan Kennedy>
Tue, 18 Mar 2025 19:21:04 +0000 (19:21 +0000)
FossilOrigin-Name: 7101ccd5331e36fd1a539f540e79ce0ce159be76ec422e1d9436eec6f3908c6e

manifest
manifest.uuid
src/select.c
test/bloom1.test

index 83f99df4a9c2eeae7d0c73e1debca0e4f7f33478..7345476bdf2ca96edcedee3033007af6d4fa438e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Internal\sdoc\stouchups\sin\sext/wasm/mkwasmbuilds.c.\sNo\sfunctional\schanges.
-D 2025-03-18T13:52:53.910
+C Fix\sa\sproblem\sthat\scould\soccur\swhen\sthe\sRHS\sof\san\sIN\soperator\swas\sa\scompound\sSELECT\sfeaturing\san\sORDER\sBY\son\sa\ssubquery\sthat\swas\sflattened\sinto\sone\sof\sthe\scomponent\sSELECTs\sintroduced\sby\s[baa83b460c677c21].\sForum\spost\s[/forumpost/1e17219c88].
+D 2025-03-18T19:21:04.551
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -783,7 +783,7 @@ F src/printf.c 33fc0d7643c848a098afdcb6e1db6de12379d47084b1cd0912cfce1d09345e44
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 20e1fbe8f840ffc0cd835e33f68a802a22e34faa918d7a269f3de242fda02f99
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
-F src/select.c 8c273248e38a8a7286abe3f41c1931cc65eff602fef128acc0cc0484e1b7abb3
+F src/select.c bfe14cdfceba54744b1c6c29099313f5173a0793dfaff0cd484774e9d05dbeab
 F src/shell.c.in 248050551cad788f8bb4b4728e00d8e36a10130d2d101e55cd51cfee03df91ff
 F src/sqlite.h.in fd70afd92948cf7cc93f687ac960bad1b0b6fbc436752419eff2fd65a1809380
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
@@ -975,7 +975,7 @@ F test/bind2.test 918bc35135f4141809ead7585909cde57d44db90a7a62aef540127148f91aa
 F test/bindxfer.test efecd12c580c14df5f4ad3b3e83c667744a4f7e0
 F test/bitvec.test 75894a880520164d73b1305c1c3f96882615e142
 F test/blob.test e7ac6c7d3a985cc4678c64f325292529a69ae252
-F test/bloom1.test cf613a27054bbaf61c5bfc440a5cfd3ff76798d0695f3fc5e5d1bbc819b8dab1
+F test/bloom1.test 04f3a17df8912bfdc292c41b59d79f93893fe69799f3089a64451f9112f9658f
 F test/boundary1.tcl 6421b2d920d8b09539503a8673339d32f7609eb1
 F test/boundary1.test 66d7f4706ccdb42d58eafdb081de07b0eb42d77b
 F test/boundary2.tcl e34ef4e930cf1083150d4d2c603e146bd3b76bcb
@@ -2215,8 +2215,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P c858a39fad30c46aec6a1f81b2d4e56c18ecf7f5cb6d2fe4a32c4b3bb1a6ed64
-R ea53eb835c0e9a65950d5e9bbfcf794b
-U stephan
-Z 336f18ce7773ad9574acc5a45857cc6c
+P 47d34260e74912eeae704bff7c4314b893af86ee66dd96a1bc6f450d3e290702
+R 4ad094e1728498f359eaedd7a6999953
+U dan
+Z 7c0745034fb8db0f32cdbdfb739169c4
 # Remove this line to create a well-formed Fossil manifest.
index 4147b282f9bbe7a82371c4d94ec56b3b78888f6b..14b3bf9e1cf8fdfe0ab4063cfc138d4739b898d7 100644 (file)
@@ -1 +1 @@
-47d34260e74912eeae704bff7c4314b893af86ee66dd96a1bc6f450d3e290702
+7101ccd5331e36fd1a539f540e79ce0ce159be76ec422e1d9436eec6f3908c6e
index eedbd82818585c0c9beae72d215c328d9f673d39..b2f2cc7fb883726f17cca9c7da59147b7a900a17 100644 (file)
@@ -3247,6 +3247,7 @@ static int multiSelect(
 multi_select_end:
   pDest->iSdst = dest.iSdst;
   pDest->nSdst = dest.nSdst;
+  pDest->iSDParm2 = dest.iSDParm2;
   if( pDelete ){
     sqlite3ParserAddCleanup(pParse, sqlite3SelectDeleteGeneric, pDelete);
   }
index 151f364ae0a66343199e3567124232bd67bfe915..f8efcc1846001ec40f8cd299e252dd10488b42b6 100644 (file)
@@ -183,6 +183,47 @@ do_execsql_test 4.3 {
 do_execsql_test 4.4 {
   SELECT * FROM t0 LEFT JOIN t1 LEFT JOIN t2 ON (b NOTNULL)==(c IN ()) WHERE c;
 } {xyz {} 7.0}
+
+reset_db
+do_execsql_test 5.0 {
+  CREATE TABLE t1 (c1);
+  INSERT INTO t1 VALUES (101);
+  CREATE TABLE t2 ( x );
+  INSERT INTO t2 VALUES(404);
+}
+
+do_execsql_test 5.1 {
+  SELECT 'val' in (
+      select 'val' from ( select 'valueB' from t1 order by 1 ) 
+      union all 
+      select 'val'
+  );
+} {1}
+
+do_execsql_test 5.2 {
+  select * from t2
+    where 'val' in (
+        select 'val' from ( select 'valueB' from t1 order by 1 ) 
+        union all 
+        select 'val'
+    );
+} {404}
+
+do_execsql_test 5.3 {
+  SELECT subq_1.c_0 as c_0 
+  FROM ( SELECT 0 as c_0) as subq_1
+  WHERE (subq_1.c_0) IN (
+    SELECT subq_2.c_0 as c_0
+    FROM (
+      SELECT 0 as c_0
+      FROM t1 as ref_1
+      WHERE (ref_1.c1) = (2)
+      ORDER BY c_0 desc
+    ) as subq_2
+    UNION ALL
+    SELECT 0 as c_0
+  );
+} {0}
  
 
 finish_test