]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix the function that determines the collating function for an expression
authordrh <>
Wed, 5 Apr 2023 02:25:37 +0000 (02:25 +0000)
committerdrh <>
Wed, 5 Apr 2023 02:25:37 +0000 (02:25 +0000)
tree to handle new cases that arise as a result of the recently added
ability to use indexed expressions in aggregate queries.

FossilOrigin-Name: b29dea0dae3110f7d5d87be7f9096427227563229ed4fe2aef7fc86639856fe4

manifest
manifest.uuid
src/expr.c
test/in.test

index 42b81ac2fea2dfc0657b666e974eaf22cfd4c441..761c8397adabcd69c50bd3ca1e715cba5767825c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sincorrect\sentry\sin\sthe\sarray\sthat\smaps\ssqlite3_value\svalues\sinto\nactual\sdatatype\snumbers.
-D 2023-04-04T18:59:38.450
+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.
+D 2023-04-05T02:25:37.619
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -571,7 +571,7 @@ F src/date.c f21815ca7172ce073db3163ac54c8d9f2841077165c1a6123b4d1c376a0c7ec7
 F src/dbpage.c d47549716549311f79dc39fe5c8fb19390a6eb2c960f8e37c89a9c4de0c1052e
 F src/dbstat.c ec92074baa61d883de58c945162d9e666c13cd7cf3a23bc38b4d1c4d0b2c2bef
 F src/delete.c a9c6d3f51c0a31e9b831e0a0580a98d702904b42d216fee530940e40dec34873
-F src/expr.c 93a6f90d4047649242d512929d5897f377e5150656f40a8676f3b0f39907892c
+F src/expr.c 9cada96745a63c93ae3ab13dff39125197a791306a1076db9c5616de41093cf5
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 722f20779f5342a787922deded3628d8c74b5249cab04098cf17ee2f2aaff002
 F src/func.c d187be57a886ddf4e6b7ef584a494361899be3df5eee6d4a747b68ff4aff4122
@@ -1163,7 +1163,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
@@ -2046,9 +2046,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 93fb8c66c5703a8af4c87acb2a60f6b3ea13e1d11b31ddea3032348660508ee8
-Q +fa8537dc90cad962dec695418d48da2890a172801ecad0c7c804023a063d3a02
-R d4e013e8d5cf7e533285396ad4863c10
+P 80d518fb82ff8d837a35280460242ebb925c112024c29496d1804768a4c3efe8
+Q +cc5041f3f067cf610adffb868b4e2d1b5d248dc5a0ecc551339b670800ecb0ff
+R 2f8aa58e38c147ecf7397b873899cb20
 U drh
-Z e9b94d3e3763206f308ee8f0c53f00b7
+Z aa0712d092c41692b64c9eee233e2c74
 # Remove this line to create a well-formed Fossil manifest.
index 20dac81fb495042deac82ce0764818807a7c3169..4aacc93c75e0d632c0abb9694bd5987aff7aa3a1 100644 (file)
@@ -1 +1 @@
-80d518fb82ff8d837a35280460242ebb925c112024c29496d1804768a4c3efe8
\ No newline at end of file
+b29dea0dae3110f7d5d87be7f9096427227563229ed4fe2aef7fc86639856fe4
\ No newline at end of file
index d0268fc248ceb0cf595a0c805aeae8991da86e72..01f2cbcabf96ac1126978f803cef7331d4403859 100644 (file)
@@ -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(i<p->x.pList->nExpr); i++){
             if( ExprHasProperty(p->x.pList->a[i].pExpr, EP_Collate) ){
index f1632b0d965709d3993e3b9714e169bdea82a1c1..0fc7a4e2c1580c3e819e12827c43650dc5141b13 100644 (file)
@@ -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