From: drh <> Date: Sat, 20 Jun 2026 21:54:18 +0000 (+0000) Subject: Fix an incorrect assert() in check-in [984c9b181801c1de] X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=fb41f57de460759e940a12f54ce2fa2af210eaba;p=thirdparty%2Fsqlite.git Fix an incorrect assert() in check-in [984c9b181801c1de] FossilOrigin-Name: 1d41c93b3636de63cc4b9ee49f73319429944f2255ab56d7556595f56434c17c --- diff --git a/manifest b/manifest index c18fdb9899..bcc04a9b0b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Correct\smisuse\sof\sa\sloop\scontrol\svariable\sin\swriting\sof\sa\skvvfs\sjournal.\sBug\sreport\s[bugs:20e208fe17|2026-06-20T08:49:41Z].\sRemove\sa\ssnippet\sof\sdead\scode\sin\sthe\sJS\skvvfs\sside. -D 2026-06-20T11:07:04.720 +C Fix\san\sincorrect\sassert()\sin\scheck-in\s[984c9b181801c1de] +D 2026-06-20T21:54:18.923 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -822,7 +822,7 @@ F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014 F src/where.c 33e4a6558ee69f33d6a4e7069e3a40a55959d14e5653a9a83926e70305d471f3 F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da F src/wherecode.c bc39ccbe3648f01157038b16cc55bdbff128590972b7185521b5526dc2815765 -F src/whereexpr.c 906d30c21470bbafc31bbc2cd07a0753bdd57169caed6ba75b8b4fc0ecb24134 +F src/whereexpr.c 00e778c829a6ac6bf2bb8899cd1e39ccc48670d665b5891e99632180a2768a15 F src/window.c 0d7dacdf2e84c6ee8ff498d5cc881dd245fcb2f14f6c5976e97e112ce96e90dc F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test 4d7a34d328e58ca2a2d78fd76c27614a41ca7ddf4312ded9c68c04f430b3b47d @@ -2036,7 +2036,7 @@ F test/walslow.test 0c51843836c9dcf40a5ac05aa781bfb977b396ee2c872d92bd48b79d5dd9 F test/walthread.test d562f51a61191ccfab64940df7aa1cef87c902fa5ab742590ef7f859dfe6a44b F test/walvfs.test e1a6ad0f3c78e98b55c3d5f0889cf366cc0d0a1cb2bccb44ac9ec67384adc4a1 F test/where.test 5087c72d26fd075a1644c8512be9fe18de9bf2d2b0754f7fd9b74a1c6540c4fc -F test/where2.test 5d93a8aec78386539aa01cf72926eb39d90de4ce1bfb6d517f56ae9bf704ba8a +F test/where2.test 3096dc7dc70dba52d974341f4a024e468c9ea3c1aa202a2e414a5413c0c5655c F test/where3.test 4ccb156ae33de86414a52775a6f590a9d60ba2cbc7a93a24fa331b7bcf5b6030 F test/where4.test 4a371bfcc607f41d233701bdec33ac2972908ba8 F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2 @@ -2208,8 +2208,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 8f8361edf82233d6cd53bf8cd2f7fbf0cb3552228c9202395ef1e3383ed559ff -R 4e67d2f2a83b956fd5a00bf7dad0dcdc -U stephan -Z 8bdb65de2a3fe2f8a0cc116985a62d78 +P a396d7c54c5f251daaaac1e68321c2a54d3b6969599027c29b7ca7abe7fb8c4e +R aaf0285a839431a4bb032764f55f992b +U drh +Z df5755c904f5557e7a754bd1dc52f8c1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d330a9786f..6481f2f8e4 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a396d7c54c5f251daaaac1e68321c2a54d3b6969599027c29b7ca7abe7fb8c4e +1d41c93b3636de63cc4b9ee49f73319429944f2255ab56d7556595f56434c17c diff --git a/src/whereexpr.c b/src/whereexpr.c index 890e5a1c5f..1a6fcf6925 100644 --- a/src/whereexpr.c +++ b/src/whereexpr.c @@ -938,7 +938,9 @@ static void exprAnalyzeOrTerm( pLeft = pThis->pLeft; pCollSeq = sqlite3ExprCompareCollSeq(pParse, pThis); }else{ - assert( 0==sqlite3ExprCompare(pParse, pThis->pLeft, pLeft, -1) ); + assert( 0==sqlite3ExprCompare(pParse, + sqlite3ExprSkipCollate(pThis->pLeft), + sqlite3ExprSkipCollate(pLeft), -1) ); if( pCollSeq!=sqlite3ExprCompareCollSeq(pParse, pThis) ){ pLeft = 0; /* Collating sequence mismatch */ break; diff --git a/test/where2.test b/test/where2.test index cfdcf0b57f..fd803d13d2 100644 --- a/test/where2.test +++ b/test/where2.test @@ -510,6 +510,26 @@ do_execsql_test where2-6.16.4 { SELECT c FROM t616a, t616b WHERE a=c OR c=b; } {aaa bbb} +# Assertion faults added by check-in 2026-06-17T13:31:01.199Z and +# subsequently discovered by dbsqlfuzz. +# +do_execsql_test where2-6.17.1 { + CREATE TABLE t617_a(a INTEGER PRIMARY KEY, b TEXT); + CREATE TABLE t617_b(c INTEGER PRIMARY KEY, d TEXT); + CREATE VIEW t617 AS SELECT a, b FROM t617_a UNION ALL SELECT c, c FROM t617_b; +} +do_execsql_test where2-6.17.2 { + SELECT EXISTS( + SELECT 1 + FROM (SELECT 1 FROM t617 WHERE a='two' OR b='i') + WHERE a='ex' OR b='iv' + ) FROM t617; +} {} +do_execsql_test where2-6.17.3 { + SELECT * FROM t617 JOIN t617 USING(a,a,b) WHERE (b=0) OR a=10; +} {} + + # Variations on the order of terms in a WHERE clause in order # to make sure the OR optimizer can recognize them all. do_test where2-6.20 {