]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an incorrect assert() associated with ALTER TABLE where an unknown
authordrh <>
Fri, 17 Nov 2023 11:58:26 +0000 (11:58 +0000)
committerdrh <>
Fri, 17 Nov 2023 11:58:26 +0000 (11:58 +0000)
aggregate function contains an ORDER BY clause.
dbsqlfuzz e0900262dadd5c78c2226ad6a435c7f0255be2cd.

FossilOrigin-Name: a9443dbfbe25e588b4adddde664ddf482f19f71c704fbf356d49cf3a6135e7fb

manifest
manifest.uuid
src/select.c
test/alter.test

index 63250e464d6305dd075c29bf6685f4836f9cb451..f257f8a1aa9c8bb7b12c78ce32d8b23d40f21f05 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Changes\sso\sthat\sif\sSQLITE_ENABLE_SETLK_TIMEOUT\sis\sdefined\sas\s2\sinstead\sof\s1,\sall\sblocking\slocks\sare\staken\sfor\sa\ssingle\smillisecond\sand\sthe\sdefault\sbusy-handler\sinvoked\sas\snormal.
-D 2023-11-15T19:19:04.747
+C Fix\san\sincorrect\sassert()\sassociated\swith\sALTER\sTABLE\swhere\san\sunknown\naggregate\sfunction\scontains\san\sORDER\sBY\sclause.\ndbsqlfuzz\se0900262dadd5c78c2226ad6a435c7f0255be2cd.
+D 2023-11-17T11:58:26.075
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -725,7 +725,7 @@ F src/printf.c 9da63b9ae1c14789bcae12840f5d800fd9302500cd2d62733fac77f0041b4750
 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c d017bad7ba8e778617701a0e986fdeb393d67d6afa84fb28ef4e8b8ad2acf916
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
-F src/select.c 503331aca8785254a7bf3d74ab338a99118fa297e1184a4dde33b3cdf7a9d341
+F src/select.c b3e8bb88f7a9572200fdb89cb1ef31605f45b7b2eb876d12d5102c068de905f0
 F src/shell.c.in 297625a1ba6ea1c08bc2ea1b838b646cad309b62bf08df0e379355629404f140
 F src/sqlite.h.in d93a4821d2f792467a60f7dc81268d1bb8634f40c31694ef254cab4f9921f96a
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
@@ -824,7 +824,7 @@ F test/aggnested.test ce85a6af7d59c3109e35c5f03b2cd11da1a9b1417371e2f942102d0f0d
 F test/aggorderby.test e6b98dbbf3ababa96892435d387de2dcf602ef02c2b848d2d817473066f154ba
 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
 F test/all.test 2ecb8bbd52416642e41c9081182a8df05d42c75637afd4488aace78cc4b69e13
-F test/alter.test 403a7f8842457044a994d0ffb42963d6e84fcfbf5e8f54556063b25d966cd454
+F test/alter.test 5d3c2a662c54362193b08961f6a65178c434905ec0fda8e0a86ebd99ea04d3cc
 F test/alter2.test a966ccfcddf9ce0a4e0e6ff1aca9e6e7948e0e242cd7e43fc091948521807687
 F test/alter3.test ffc4ab29ce78a3517a66afd69b2730667e3471622509c283b2bd4c46f680fba3
 F test/alter4.test 716caa071dd8a3c6d57225778d15d3c3cbf5e34b2e84ae44199aeb2bbf50a707
@@ -2140,9 +2140,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 fe5cc4169c5348324e863d3e339de94ed01749a3b9c86aa9adc5e3244bd9d033 9c2b4bdd03716bf492ba85198717f3084ebf187bdb068893bd1ff8662362df89
-R e462fc60136fbed1193c075a92c8ac8f
-T +closed 9c2b4bdd03716bf492ba85198717f3084ebf187bdb068893bd1ff8662362df89
-U dan
-Z 15065b86474a02479c391229a41be9ef
+P 79e24ec3dd40373bbb93792829b18d9ef40daf19d4606174e36c8e19e61a7529
+R b29e959af1ddf305b69d7ebe92a6cddd
+U drh
+Z 00bba4de3942374c4ed33ae6871ad316
 # Remove this line to create a well-formed Fossil manifest.
index 781273374414e66198cdd9325fda0e355a14f4db..b54c03c18107efc2d0131f58c0eea7f9fdfa58bf 100644 (file)
@@ -1 +1 @@
-79e24ec3dd40373bbb93792829b18d9ef40daf19d4606174e36c8e19e61a7529
\ No newline at end of file
+a9443dbfbe25e588b4adddde664ddf482f19f71c704fbf356d49cf3a6135e7fb
\ No newline at end of file
index 2b28d9ca5e9f4da9ff550c8fc6224e14ecfc1868..f6a95267764ef6ba8451238f3d296ddfa67b76ad 100644 (file)
@@ -6372,10 +6372,11 @@ static void selectAddSubqueryTypeInfo(Walker *pWalker, Select *p){
   SrcList *pTabList;
   SrcItem *pFrom;
 
-  assert( p->selFlags & SF_Resolved );
   if( p->selFlags & SF_HasTypeInfo ) return;
   p->selFlags |= SF_HasTypeInfo;
   pParse = pWalker->pParse;
+  testcase( (p->selFlags & SF_Resolved)==0 );
+  assert( (p->selFlags & SF_Resolved) || IN_RENAME_OBJECT );
   pTabList = p->pSrc;
   for(i=0, pFrom=pTabList->a; i<pTabList->nSrc; i++, pFrom++){
     Table *pTab = pFrom->pTab;
index ee8e6c0b90d5c131c2aa76ed7267cf8e6352adaa..da562ce316a76d616a86172deb3e5bec366d846b 100644 (file)
@@ -954,4 +954,21 @@ do_catchsql_test alter-20.3 {
   INSERT INTO t1(a) VALUES(45);
 } {1 {cannot store BLOB value in TEXT column t1.b}}
 
+# 2023-11-17 dbsqlfuzz e0900262dadd5c78c2226ad6a435c7f0255be2cd
+# Assertion fault associated with ALTER TABLE and an
+# aggregate ORDER BY within an unknown aggregate function.
+#
+reset_db
+do_execsql_test alter-21.1 {
+  CREATE TABLE t1(a,b,c,d);
+  CREATE TABLE t2(a,b,c,d,x);
+  CREATE TRIGGER r1 AFTER INSERT ON t2 BEGIN
+    SELECT unknown_function(a ORDER BY (SELECT group_concat(DISTINCT a ORDER BY a) FROM t1)) FROM t1;
+  END;
+  ALTER TABLE t2 RENAME TO e;
+} {}
+do_execsql_test alter-21.2 {
+  SELECT name, type FROM sqlite_schema ORDER BY name;
+} {e table r1 trigger t1 table}
+
 finish_test