From: drh <> Date: Mon, 7 Jul 2025 16:19:44 +0000 (+0000) Subject: Rework the fix to the problem described by X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;ds=inline;p=thirdparty%2Fsqlite.git Rework the fix to the problem described by [forum:/forumpost/b9647a113b465950|forum post b9647a113b] so that it provides a more complete fix that covers cases that were not resolved by the original fix, and so that it does not cause performance regressions. FossilOrigin-Name: 28db0d152d90fb5e62d03ea5caceabe8901be98522aef3dc2b54564fbc35355d --- 0a5508aeb4433dc75a22d9cd18ece5c7a13648b5 diff --cc manifest index 5559239615,82932a507d..48b10eebb7 --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Work\saround\sthe\sEmscripten\s4.10\sregression\sdescribed\sin\s[https://github.com/emscripten-core/emscripten/issues/24656\s|\sEmscripten\sticket\s#24656].\sProblem\sreported\soff-list\sby\sBrickViking. - D 2025-07-07T12:11:26.315 -C Simplifications\sto\sthe\srow-value\sIN\soperator\slogic.\s\sDo\snot\slet\sthe\squery\nplanner\saccept\sa\sWhereLoop\sfor\sa\srow-value\sIN\soperator\sthat\suses\sthe\ssame\nindex\scolumn\smore\sthan\sonce. -D 2025-07-07T15:40:53.150 ++C Rework\sthe\sfix\sto\sthe\sproblem\sdescribed\sby\n[forum:/forumpost/b9647a113b465950|forum\spost\sb9647a113b]\sso\sthat\sit\nprovides\sa\smore\scomplete\sfix\sthat\scovers\scases\sthat\swere\snot\sresolved\sby\nthe\soriginal\sfix,\sand\sso\sthat\sit\sdoes\snot\scause\sperformance\sregressions. ++D 2025-07-07T16:19:44.166 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@@ -867,9 -867,9 +867,9 @@@ F src/vxworks.h d2988f4e5a61a4dfe82c652 F src/wal.c 20be6f0a25a80b7897cf2a5369bfd37ef198e6f0b6cdef16d83eee856056b159 F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014 - F src/where.c f58d41d0923eeb21cab8e4fc87a0b36c0724ff4f279ce95ab2731b4696b8e75a + F src/where.c 21b768d47fe28aafc7607a97228c261d7ccdca5cd2bff2221418566ca608e2c5 F src/whereInt.h 8d94cb116c9e06205c3d5ac87af065fc044f8cf08bfdccd94b6ea1c1308e65da - F src/wherecode.c 504f3c1270c3ffd51ebcdf7a31de08aa51a63b33a2ccdf8f5736afe3dfa73d45 -F src/wherecode.c ce9e2311186c14ef0f3a56bdc243f17f8bd43de70bd79841fe13ee8db0cd9ffa ++F src/wherecode.c 8e375f7c2191e2a797a89ad34fca687509dc10a012877bc07f464b3cf5f21eb7 F src/whereexpr.c d007dc41364de5902181739632380afd671e14f0c5cc9978e64a2c6df8f28c6c F src/window.c d01227141f622f24fbe36ca105fbe6ef023f9fd98f1ccd65da95f88886565db5 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@@ -2208,8 -2208,8 +2208,9 @@@ F tool/version-info.c 3b36468a90faf1bbd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f - P 9f335b9a4e9e761a0c6afd6dc69665a24506141bde88530bf59fcbdf957ae881 - R 027d046a8c80c08284dcaad6a9d57a24 - U stephan - Z c407d0bb15707ac8be6028e01680c96c -P ad8ddcefab5cc526b1cd77731e00939c672e61ca83350d28961b67635d20da03 -R 5a92e17b8b464622bfef81f8d59225e0 ++P c385475b250f3364507a95c5832137098a9bb7c7fc12ab3bb116e1fad7bb7645 d2adf61f21a3ce901a2b08199ad0de191e88ef16e097c5f7a75c95ad958eff12 ++R 82e9c3e3f384036ea2f7751db27154bc ++T +closed d2adf61f21a3ce901a2b08199ad0de191e88ef16e097c5f7a75c95ad958eff12 + U drh -Z d89bb9ed1d7ca89fa0bfcdcb21412c8b ++Z 1a6c8c788ec8f2b16f1cc6f88559d1db # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index eeb7056dd1,bc807743f8..b06de79081 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - c385475b250f3364507a95c5832137098a9bb7c7fc12ab3bb116e1fad7bb7645 -d2adf61f21a3ce901a2b08199ad0de191e88ef16e097c5f7a75c95ad958eff12 ++28db0d152d90fb5e62d03ea5caceabe8901be98522aef3dc2b54564fbc35355d diff --cc src/wherecode.c index cc672aa839,eb508d9388..839304c118 --- a/src/wherecode.c +++ b/src/wherecode.c @@@ -598,7 -598,7 +598,9 @@@ static Expr *removeUnindexableInClauseT int iField; assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 ); iField = pLoop->aLTerm[i]->u.x.iField - 1; -- if( pOrigRhs->a[iField].pExpr==0 ) continue; /* Duplicate PK column */ ++ if( NEVER(pOrigRhs->a[iField].pExpr==0) ){ ++ continue; /* Duplicate PK column */ ++ } pRhs = sqlite3ExprListAppend(pParse, pRhs, pOrigRhs->a[iField].pExpr); pOrigRhs->a[iField].pExpr = 0; if( pRhs ) pRhs->a[pRhs->nExpr-1].u.x.iOrderByCol = iField+1;