]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem with queries that use "IN(...) ORDER BY ... NULLS LAST" or similar...
authordan <Dan Kennedy>
Thu, 2 May 2024 19:22:23 +0000 (19:22 +0000)
committerdan <Dan Kennedy>
Thu, 2 May 2024 19:22:23 +0000 (19:22 +0000)
FossilOrigin-Name: 26b2d9390f1273ee0e3f3c96f6bc5bf0e9c1dcfd0d9ecd993dba487ef5a07f7e

manifest
manifest.uuid
src/wherecode.c
test/in7.test

index f3c1c280fd5d6251ec3a270caa9f89a811feed39..a0040a7b296a36654c6971c43086b9677e58f787 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\san\sassert\sfailure\saccessible\sonly\swhen\sinternal\stesting\sfeatures\sare\senabled.\sdbsqlfuzz\scrash-66abacda6bca6bd531e25595e8c8068e2c710326.txt.
-D 2024-05-02T18:16:23.502
+C Fix\sa\sproblem\swith\squeries\sthat\suse\s"IN(...)\sORDER\sBY\s...\sNULLS\sLAST"\sor\ssimilar\sintroduced\sby\s[d7648e21605a0b38].
+D 2024-05-02T19:22:23.368
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -839,7 +839,7 @@ F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
 F src/walker.c 7c7ea0115345851c3da4e04e2e239a29983b61fb5b038b94eede6aba462640e2
 F src/where.c 0ef9638651b900d64d7e1e877af37cd7900159ff875547ec29b918a1497e5c9c
 F src/whereInt.h 82a13766f13d1a53b05387c2e60726289ef26404bc7b9b1f7770204d97357fb8
-F src/wherecode.c b73b5bcd0840491e8faa126fbf933e3bda0d9bf85222ddc7ff608154f0f86d1e
+F src/wherecode.c b9908c0a1aab095822a1e7032556bedc03b6d29641191e9ca535fb2307cd733d
 F src/whereexpr.c 67d15caf88a1a9528283d68ff578e024cf9fe810b517bb0343e5aaf695ad97dd
 F src/window.c 5d95122dd330bfaebd732358c8ef067c5a9394a53ac249470d611d0ce2c52be2
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
@@ -1279,7 +1279,7 @@ F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
 F test/in4.test bb767ec1cfd1730256f0a83219f0acda36bc251b63f8b8bb7d8c7cff17875a4f
 F test/in5.test 4fd79c70dfa0681313e8cdca07f5ff0400bdc0e20f808a5c59eaef1e4b48082a
 F test/in6.test f5f40d6816a8bb7c784424b58a10ac38efb76ab29127a2c17399e0cbeeda0e4b
-F test/in7.test e0b3bd735c13547f038f386440152ad2642a066e9f96366552763bb5455117d0
+F test/in7.test b3a87d5e4f608ac9787e707fc4f8f2a0d89359489d109fdcac01470c3a6832f4
 F test/incrblob.test c9b96afc292aeff43d6687bcb09b0280aa599822
 F test/incrblob2.test a494c9e848560039a23974b9119cfc2cf3ad3bd15cc2694ee6367ae537ef8f1f
 F test/incrblob3.test 67621a04b3084113bf38ce03797d70eca012d9d8f948193b8f655df577b0da6f
@@ -2188,8 +2188,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 8519b4d0393ed17eed06bceffbc891fe8cae0bc1d466a79eba0602ef46b07c56
-R 0a3b026a0a16d38bbb74d5089bed24b2
+P fbc446daac761dd1b66a85c9b61e1d5af194a8fd665600c43a874da38cc6ec10
+R 36f998b45a8aa5d9ecb00ca50d9b4f7d
 U dan
-Z ae138bbd9a4a27c1543b292e5b8d0d96
+Z b095a9ec23cb25cb4e9e06b89cd38b3b
 # Remove this line to create a well-formed Fossil manifest.
index 9a2c0a20d20a832235042969e3c182f593a074d7..91bc583d15c3da8e13f74e3f28aea3d7ce570a0f 100644 (file)
@@ -1 +1 @@
-fbc446daac761dd1b66a85c9b61e1d5af194a8fd665600c43a874da38cc6ec10
\ No newline at end of file
+26b2d9390f1273ee0e3f3c96f6bc5bf0e9c1dcfd0d9ecd993dba487ef5a07f7e
\ No newline at end of file
index a895d3935b1f62d2e0a3a6cfe87a876f0021f141..4aca6eb6242195d45d2d5b48537e60eb6162e35c 100644 (file)
@@ -2106,7 +2106,7 @@ Bitmask sqlite3WhereCodeOneLoopStart(
  
     /* Record the instruction used to terminate the loop. */
     if( (pLoop->wsFlags & WHERE_ONEROW)
-     || (pLevel->u.in.nIn && whereLoopIsOneRow(pLoop))
+     || (pLevel->u.in.nIn && regBignull==0 && whereLoopIsOneRow(pLoop))
     ){
       pLevel->op = OP_Noop;
     }else if( bRev ){
index 8917d4432f5fd52b1f58f1fd05b551df4a4f407d..cf17933a39618fc450514404bbe972f5feb4fead 100644 (file)
@@ -103,5 +103,18 @@ foreach {tn nNext idx sql} {
   } $nNext
 }
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 2.0 {
+  CREATE TABLE t1(a TEXT PRIMARY KEY, b TEXT) WITHOUT ROWID;
+  INSERT INTO t1 VALUES('1', 'one');
+  INSERT INTO t1 VALUES('2', NULL);
+  INSERT INTO t1 VALUES('3', 'three');
+}
+
+do_execsql_test 2.1 {
+  SELECT b FROM t1 WHERE a IN (1,2,3) ORDER BY b ASC NULLS LAST;
+} {one three {}}
+
 
 finish_test