]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Back out check-in [9abaa0ac2b304934] as the code removed there is necessary
authordrh <>
Sun, 28 Sep 2025 23:10:54 +0000 (23:10 +0000)
committerdrh <>
Sun, 28 Sep 2025 23:10:54 +0000 (23:10 +0000)
after all.

FossilOrigin-Name: 27ae98629406bbaee2857f75c069b2ccd4757b247f0742e51b9e619e96b6dc45

manifest
manifest.uuid
src/where.c
test/where2.test

index c526ebe6085fd86cca1a437af65af2f471cf90e0..087673e945fafbdb40a605df44090be7f81333ff 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Revamp\sthe\simplementation\sof\sgenerate_series\sto\ssimplify\sand\simprove\nlong-term\smaintainability.
-D 2025-09-28T18:25:59.467
+C Back\sout\scheck-in\s[9abaa0ac2b304934]\sas\sthe\scode\sremoved\sthere\sis\snecessary\nafter\sall.
+D 2025-09-28T23:10:54.543
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -818,7 +818,7 @@ F src/vxworks.h 9d18819c5235b49c2340a8a4d48195ec5d5afb637b152406de95a9436beeaeab
 F src/wal.c a278339ecf5f194fd71fff1f0da1368de50e3a32edc3e9944e1ee1f4610476ff
 F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
-F src/where.c 8188fac428a8d8e50e133563b59a2be3108fb6723004829c8297c4648784daee
+F src/where.c 9d7b4095ae0a34d9604c3e185c65cdf6eca5f2e8707403c526eed798867cece4
 F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da
 F src/wherecode.c 71c5c6804b7f882dec8ec858758accae02fcfca13df3cc720f1f258e663ec7c5
 F src/whereexpr.c 403a44eeec1a0f0914fccc6a59376b6924bc00ef6728fe6ffce4cf3051b320fc
@@ -2002,7 +2002,7 @@ F test/walslow.test 0c51843836c9dcf40a5ac05aa781bfb977b396ee2c872d92bd48b79d5dd9
 F test/walthread.test 14b20fcfa6ae152f5d8e12f5dc8a8a724b7ef189f5d8ef1e2ceab79f2af51747
 F test/walvfs.test e1a6ad0f3c78e98b55c3d5f0889cf366cc0d0a1cb2bccb44ac9ec67384adc4a1
 F test/where.test 5087c72d26fd075a1644c8512be9fe18de9bf2d2b0754f7fd9b74a1c6540c4fc
-F test/where2.test d7d546b8919ed223fb58a6590de296bcc2d5996478412f00bf865030e4f89b3c
+F test/where2.test 52237a8cb27ebbf6583469429bb5733d1b94ac37d09c3dbd0f487952ed0ab3f8
 F test/where3.test 4ccb156ae33de86414a52775a6f590a9d60ba2cbc7a93a24fa331b7bcf5b6030
 F test/where4.test 4a371bfcc607f41d233701bdec33ac2972908ba8
 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
@@ -2169,9 +2169,9 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P acaaf8cce9e780bf937436b4c987ed284aa0bba6f5ca9508d9dbad598af2991d 86dcc68d1816d970d8d5fb158696c3fe6c5ddcac2c255823110d656372503885
-R 762cba5cbbf74e8c3ba8ca4699030460
-T +closed 86dcc68d1816d970d8d5fb158696c3fe6c5ddcac2c255823110d656372503885
+P 9041ca8543ff3d2a617ce4df696aa53269a7803716caaf55a8e61e59ee667040
+Q -9abaa0ac2b3049341f36ff683ff6eebb589698bd910624aa24f11398d557b3c2
+R 276447da7d43a3a23f6b643c33b0ee8f
 U drh
-Z e1db3f0aba6773a2fe5bbd6bf6414138
+Z e1b4d1b119445a66e51e6571ce3252a4
 # Remove this line to create a well-formed Fossil manifest.
index 953e4b0de830d9907e32abc6991f603700bd91da..32c782bae71de8d94516344f5c8a710fa7ec99c5 100644 (file)
@@ -1 +1 @@
-9041ca8543ff3d2a617ce4df696aa53269a7803716caaf55a8e61e59ee667040
+27ae98629406bbaee2857f75c069b2ccd4757b247f0742e51b9e619e96b6dc45
index 9492157a39279ef9e20044aa93862c3156123432..77a976734a6a903c0ed2d843b452b911b25ba98f 100644 (file)
@@ -6011,14 +6011,18 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
     aFrom = pFrom;
     nFrom = nTo;
   }
-  assert( nFrom==0 || nFrom==1 );
 
   if( nFrom==0 ){
     sqlite3ErrorMsg(pParse, "no query solution");
     sqlite3StackFreeNN(pParse->db, pSpace);
     return SQLITE_ERROR;
   }
+  /* Find the lowest cost path.  pFrom will be left pointing to that path */
   pFrom = aFrom;
+  for(ii=1; ii<nFrom; ii++){
+    if( pFrom->rCost>aFrom[ii].rCost ) pFrom = &aFrom[ii];
+  }
   assert( pWInfo->nLevel==nLoop );
   /* Load the lowest cost path into pWInfo */
   for(iLoop=0; iLoop<nLoop; iLoop++){
index a38f6e54baf84fb9726d311e22efae9e9c22a5e8..83740bffdf98240038cd918fa8301132784bbaa7 100644 (file)
@@ -778,4 +778,20 @@ do_execsql_test where2-14.1 {
   SELECT x FROM t14a WHERE x NOT IN (SELECT x FROM t14b);
 } {}
 
+# Demonstrate that the code removed by
+# https://sqlite.org/src/info/2025-09-17T17:09:07Z is in fact
+# necessary.  Answer confirmed by PostgreSQL
+#
+do_execsql_test where2-15.1 {
+  DROP TABLE IF EXISTS t1;
+  CREATE TABLE t1(a INTEGER PRIMARY KEY,b INT);
+  INSERT INTO t1 VALUES(12,34),(56,78),(90,12);
+  DROP TABLE IF EXISTS t2;
+  CREATE TABLE t2(x INT UNIQUE);
+  INSERT INTO t2 VALUES(78),(12);
+  SELECT a,b,quote(x),'|'
+    FROM t1 LEFT JOIN (SELECT x FROM t2) AS s1 ON t1.b=s1.x
+   ORDER BY a,EXISTS(SELECT 1 FROM t1 LEFT JOIN (SELECT x AS y FROM t2) AS s2 ON t1.b=s2.y),x;
+} {12 34 NULL | 56 78 78 | 90 12 12 |}
+
 finish_test