From: drh <> Date: Thu, 1 Sep 2022 14:33:28 +0000 (+0000) Subject: Defer deleting a transient SELECT statement associated with a flattening X-Git-Tag: version-3.39.3~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=254c5ad58d15cc98bd09ffe9bcf16bcd3f67fffc;p=thirdparty%2Fsqlite.git Defer deleting a transient SELECT statement associated with a flattening of one arm of a compound SELECT until after the parse has completed. FossilOrigin-Name: 8403c0d5d626eaf6c4830e6d706af3ea2d84a9a12b8eecc6f549fa2ca24352b7 --- diff --git a/manifest b/manifest index 5ed91a99fa..78793f34fe 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 968721d2b4..9b97f8c029 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5f93239a8c0fc724837b208fb3d48fd709c5b60c15e90dbb82fd046c0b735b04 \ No newline at end of file +8403c0d5d626eaf6c4830e6d706af3ea2d84a9a12b8eecc6f549fa2ca24352b7 \ No newline at end of file diff --git a/src/select.c b/src/select.c index acb2919da4..4242730e20 100644 --- a/src/select.c +++ b/src/select.c @@ -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;