From: drh <> Date: Thu, 14 Jul 2022 01:48:27 +0000 (+0000) Subject: When applying the omit-ORDER-BY optimization, defer deleting the AST of X-Git-Tag: version-3.40.0~303 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e834484d892b2d39671ad78e9fda9b774660810c;p=thirdparty%2Fsqlite.git When applying the omit-ORDER-BY optimization, defer deleting the AST of the deleted ORDER BY clause until after code generation ends. FossilOrigin-Name: f22f95b838873f1d2a320afe3d0f4e4847948fcd343097b93a9f684a6f66d6ba --- diff --git a/manifest b/manifest index 4f0f666584..a3df518eea 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\stestrunner.tcl\sso\sthat\sit\scan\sdetect\sthe\snumber\sof\slogical\scores\son\sosx. -D 2022-07-13T21:28:19.394 +C When\sapplying\sthe\somit-ORDER-BY\soptimization,\sdefer\sdeleting\sthe\sAST\sof\nthe\sdeleted\sORDER\sBY\sclause\suntil\safter\scode\sgeneration\sends. +D 2022-07-14T01:48:27.069 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -570,7 +570,7 @@ F src/printf.c 6166a30417b05c5b2f82e1f183f75faa2926ad60531c0b688a57dbc951441a20 F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c F src/resolve.c 84a8443e3723e908730d754f54df4e1dacc1eb7073c0bd79c9d5efe977a9f5b9 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c 01e5099d4fc15f84a38e3b439b27cdb2d62e4bb138cbcaf835dd46386f8fd82c +F src/select.c 45b93eee3c349f46240ddc14344365bbf34579ec332bd4c7bc061945e38172e2 F src/shell.c.in 29749b34bbd19d0004fdb6f61f62659096e1c0b4dfb1ad2314e7fafbe9dd8d37 F src/sqlite.h.in 01573eae96721f2a8ee2a9e3b7140ceeba2e9c44350911890b89b8ff0dcf6781 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -1981,8 +1981,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 e4f9cb01d790c27394cc021e7d4a16f4d5feda2d2493abd82e9660d7e6e9fec0 -R 9a0d40a26ff73e3e7c23af9cf6fe1abf -U dan -Z 0c6e6152833b38a594a27d8bd483ee08 +P 14918f28221a3124b78a490fbb483279551ccc5a0032ea854ff0ac365684cc60 +R d2c6af8b43cf81f08214974216426964 +U drh +Z 663440ae7ea06bca4d8f20ca5b3783d1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b38d313dcb..4924411865 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -14918f28221a3124b78a490fbb483279551ccc5a0032ea854ff0ac365684cc60 \ No newline at end of file +f22f95b838873f1d2a320afe3d0f4e4847948fcd343097b93a9f684a6f66d6ba \ No newline at end of file diff --git a/src/select.c b/src/select.c index d712cc3ee6..90ba47fa8a 100644 --- a/src/select.c +++ b/src/select.c @@ -6834,7 +6834,9 @@ int sqlite3Select( ){ SELECTTRACE(0x100,pParse,p, ("omit superfluous ORDER BY on %r FROM-clause subquery\n",i+1)); - sqlite3ExprListDelete(db, pSub->pOrderBy); + sqlite3ParserAddCleanup(pParse, + (void(*)(sqlite3*,void*))sqlite3ExprListDelete, + pSub->pOrderBy); pSub->pOrderBy = 0; }