From: drh <> Date: Wed, 5 Apr 2023 02:21:57 +0000 (+0000) Subject: Fix the function that determines the collating function for an expression X-Git-Tag: version-3.42.0~177 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8907cb2f88be0528092661a9d40fc57911027e9b;p=thirdparty%2Fsqlite.git Fix the function that determines the collating function for an expression tree to handle new cases that arise as a result of the recently added ability to use indexed expressions in aggregate queries. [forum/forumpost/0713a16a44|Forum post 0713a16a44]. FossilOrigin-Name: cc5041f3f067cf610adffb868b4e2d1b5d248dc5a0ecc551339b670800ecb0ff --- diff --git a/manifest b/manifest index 6ee44ae2a5..08dc7efb09 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Shell\sto\suse\sSQLITE_SHELL_HAVE_RECOVER\sconsistently\s(correcting\scheck-in\s0421cc03e0efa8f1) -D 2023-04-04T19:56:28.782 +C Fix\sthe\sfunction\sthat\sdetermines\sthe\scollating\sfunction\sfor\san\sexpression\ntree\sto\shandle\snew\scases\sthat\sarise\sas\sa\sresult\sof\sthe\srecently\sadded\nability\sto\suse\sindexed\sexpressions\sin\saggregate\squeries.\n[forum/forumpost/0713a16a44|Forum\spost\s0713a16a44]. +D 2023-04-05T02:21:57.915 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -575,7 +575,7 @@ F src/date.c f21815ca7172ce073db3163ac54c8d9f2841077165c1a6123b4d1c376a0c7ec7 F src/dbpage.c f3eea5f7ec47e09ee7da40f42b25092ecbe961fc59566b8e5f705f34335b2387 F src/dbstat.c ec92074baa61d883de58c945162d9e666c13cd7cf3a23bc38b4d1c4d0b2c2bef F src/delete.c a9c6d3f51c0a31e9b831e0a0580a98d702904b42d216fee530940e40dec34873 -F src/expr.c 8e30ea19cd8c08659604fb6a25841f6c2878ad6af6929a7d8bf1fe2401b34db1 +F src/expr.c 60b2e406df2d3ebd05302659b0f1354026f1145477428436ef3ae9ce98957908 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 722f20779f5342a787922deded3628d8c74b5249cab04098cf17ee2f2aaff002 F src/func.c d187be57a886ddf4e6b7ef584a494361899be3df5eee6d4a747b68ff4aff4122 @@ -1168,7 +1168,7 @@ F test/hook2.test b9ff3b8c6519fb67f33192f1afe86e7782ee4ac8 F test/icu.test 716a6b89fbabe5cc63e0cd4c260befb08fd7b9d761f04d43669233292f0753b1 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e F test/imposter1.test c3f1db2d3db2c24611a6596a3fc0ffc14f1466c8 -F test/in.test faf3be786a263d18eee6c2a8c3a81fbf58364ed40dedabc7e4f09de61dc91292 +F test/in.test 291d881deae63fc2f0f3a9d7fdc1d300db58a6812c08e7c0370c970a984ecfbf F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75 F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0 F test/in4.test fdd1d8134da8376985c2edba6035a2de1f6c731524d2ffa651419e8fe2cd1c5a @@ -2052,8 +2052,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 fa8537dc90cad962dec695418d48da2890a172801ecad0c7c804023a063d3a02 -R b56dd0792b457a030e49bb49e1966109 -U larrybr -Z 9c0bb6709148976b80e47a4a30512730 +P 5b980d72a03fa1cfd0f1bf3ed04068b9f216b75a304deb2b7bbe8ddce0e6fb96 +R 7c7fc015455f5e833e4cdc87fb91e9e2 +U drh +Z ea122c35df9ab34c8929b37c7d61629c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 48a4070c86..ed4439c275 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5b980d72a03fa1cfd0f1bf3ed04068b9f216b75a304deb2b7bbe8ddce0e6fb96 \ No newline at end of file +cc5041f3f067cf610adffb868b4e2d1b5d248dc5a0ecc551339b670800ecb0ff \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 47cfba2232..f1ce6ba4a2 100644 --- a/src/expr.c +++ b/src/expr.c @@ -278,9 +278,8 @@ CollSeq *sqlite3ExprCollSeq(Parse *pParse, const Expr *pExpr){ }else{ Expr *pNext = p->pRight; /* The Expr.x union is never used at the same time as Expr.pRight */ - assert( ExprUseXList(p) ); - assert( p->x.pList==0 || p->pRight==0 ); - if( p->x.pList!=0 && !db->mallocFailed ){ + assert( !ExprUseXList(p) || p->x.pList==0 || p->pRight==0 ); + if( ExprUseXList(p) && p->x.pList!=0 && !db->mallocFailed ){ int i; for(i=0; ALWAYS(ix.pList->nExpr); i++){ if( ExprHasProperty(p->x.pList->a[i].pExpr, EP_Collate) ){ diff --git a/test/in.test b/test/in.test index f1632b0d96..0fc7a4e2c1 100644 --- a/test/in.test +++ b/test/in.test @@ -842,7 +842,16 @@ do_execsql_test in-23.0 { GROUP BY a0.a HAVING (SELECT sum( (a1.a == +a0.a COLLATE NOCASE) IN (SELECT b FROM t4))); } {ABC abc,ABC,def abc abc,ABC,def def abc,ABC,def} - - +# +# Follow-up forum/forumpost/0713a16a44 +# +do_execsql_test in-23.1 { + CREATE VIEW t5 AS + SELECT 1 AS b + WHERE (SELECT count(0=NOT+a COLLATE NOCASE IN (SELECT 0)) + FROM t4 + GROUP BY a); + SELECT * FROM t5; +} 1 finish_test