]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Defer deleting a transient SELECT statement associated with a flattening
authordrh <>
Thu, 1 Sep 2022 14:33:28 +0000 (14:33 +0000)
committerdrh <>
Thu, 1 Sep 2022 14:33:28 +0000 (14:33 +0000)
of one arm of a compound SELECT until after the parse has completed.

FossilOrigin-Name: 8403c0d5d626eaf6c4830e6d706af3ea2d84a9a12b8eecc6f549fa2ca24352b7

manifest
manifest.uuid
src/select.c

index 5ed91a99fa2abfb4f30a4dc40ae2a12d9f2df1bc..78793f34fef83730f3327aba8199317fa64a843c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\sattempt\sthe\sOP_Count\soptimization\son\squeries\swith\sHAVING\sclauses.\nThis\sfixes\sa\sproblem\sexposed\sby\s[2cf373b10c9bc4cb].
-D 2022-08-31T14:40:46.251
+C Defer\sdeleting\sa\stransient\sSELECT\sstatement\sassociated\swith\sa\sflattening\nof\sone\sarm\sof\sa\scompound\sSELECT\suntil\safter\sthe\sparse\shas\scompleted.
+D 2022-09-01T14:33:28.453
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -570,7 +570,7 @@ F src/printf.c e99ee9741e79ae3873458146f59644276657340385ade4e76a5f5d1c25793764
 F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c
 F src/resolve.c f0d663c9b1ceeb3e7d262ede872dd3b24b323a7cc11d84c05a39d962e7d64b07
 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
-F src/select.c b2fc1c7f48f8e0671a0901d76b82869c784fa237bf10acb05d46c2b1dfc585c3
+F src/select.c fea5ae26259dc995b2144a28bbb5b013196dbcc86527cd992ed109b00af7f9e8
 F src/shell.c.in 2b85128ca8ea13fc2dc32f971d628d9f688a324a30f469619b817ce490764fcb
 F src/sqlite.h.in 01573eae96721f2a8ee2a9e3b7140ceeba2e9c44350911890b89b8ff0dcf6781
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
@@ -1978,9 +1978,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 5bf4c5fd0a6ac02392249d3a2057a6fca5b3fcf7c8ad376bbd009d11a9ecd765
-Q +566b7842ee286ed8620a87b06de65bc173ad0d208df4157292238fcb059cb484
-R 344cedb570ab8e65ab60e84ab85d11d1
+P 5f93239a8c0fc724837b208fb3d48fd709c5b60c15e90dbb82fd046c0b735b04
+Q +1c4157c71cd1e062a9c2c79787d17e34e340f28ce1e40573851dfe174f5da7d7
+R b4a5bfbadcfae5c34625a68fc28894a1
 U drh
-Z 9a3d1336e31dd2d17d9c157c5ccb97bc
+Z 15bbf733e3ef371954fec2ba5159af74
 # Remove this line to create a well-formed Fossil manifest.
index 968721d2b4b8b6db0182716582a94df877efa50a..9b97f8c0292f3f5e6e2b48abbbcbc3f6a9f68d4b 100644 (file)
@@ -1 +1 @@
-5f93239a8c0fc724837b208fb3d48fd709c5b60c15e90dbb82fd046c0b735b04
\ No newline at end of file
+8403c0d5d626eaf6c4830e6d706af3ea2d84a9a12b8eecc6f549fa2ca24352b7
\ No newline at end of file
index acb2919da451931ee717d2aace2867b1fc7ed49b..4242730e2047bed1c563db685fce44599c04812d 100644 (file)
@@ -3691,10 +3691,11 @@ static int multiSelectOrderBy(
   */
   sqlite3VdbeResolveLabel(v, labelEnd);
 
-  /* Reassembly the compound query so that it will be freed correctly
+  /* Reassemble the compound query so that it will be freed correctly
   ** by the calling function */
   if( pSplit->pPrior ){
-    sqlite3SelectDelete(db, pSplit->pPrior);
+    sqlite3ParserAddCleanup(pParse, 
+       (void(*)(sqlite3*,void*))sqlite3SelectDelete, pSplit->pPrior);
   }
   pSplit->pPrior = pPrior;
   pPrior->pNext = pSplit;