From: drh <> Date: Mon, 25 Apr 2022 14:59:59 +0000 (+0000) Subject: Add a new optimizer disabling bit to disable just the UNION ALL branch of the X-Git-Tag: version-3.39.0~194 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=95fe38f2fc7468be6165552f8ef6bc85bcf1f358;p=thirdparty%2Fsqlite.git Add a new optimizer disabling bit to disable just the UNION ALL branch of the query flattener. FossilOrigin-Name: c0f9ebab5455d8541a562122d3270b95ce571c3fd870b0048dda2b036c2b66c0 --- diff --git a/manifest b/manifest index 7a9ad1dd31..b24cf29d3b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sunintended\sside-effects\son\sParse.nSelect\sin\sthe\nsqlite3ViewGetColumnNames()\sroutine. -D 2022-04-25T14:49:48.098 +C Add\sa\snew\soptimizer\sdisabling\sbit\sto\sdisable\sjust\sthe\sUNION\sALL\sbranch\sof\sthe\nquery\sflattener. +D 2022-04-25T14:59:59.150 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -553,12 +553,12 @@ F src/printf.c 512574910a45341c8ad244bd3d4939968ebdfde215645b676fff01cc46e90757 F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c F src/resolve.c f72bb13359dd5a74d440df25f320dc2c1baff5cde4fc9f0d1bc3feba90b8932a F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c 92b3b250434de59fb87462dcdad79b456ae8ec82ae3194d4081ecb5af41ff0ec +F src/select.c ea203cd4f5d07443d7d25ae30fc0fb11b04ab9bd46a047ff5ebcb0abef63b4e9 F src/shell.c.in ae0a6fae983caac6f8c824733f0599dfdf7b3a7e8efdef3cb5e3ab2e457ffc35 F src/sqlite.h.in 2a35f62185eb5e7ecc64a2f68442b538ce9be74f80f28a00abc24837edcf1c17 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h f49e28c25bd941e79794db5415fdf7b202deb3bc072ed6f1ed273d578703684e -F src/sqliteInt.h 36b5d1cce15971fa71b53a950de3158197d85dbaf9b8b2f0bc6279347b09606a +F src/sqliteInt.h 2ed6fde4c3cd0438816f2b4597634067b11e430028b0e27b4be27736930d1739 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/status.c 4a3da6d77eeb3531cb0dbdf7047772a2a1b99f98c69e90ce009c75fe6328b2c0 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 @@ -1951,8 +1951,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 bd6811d8110d5f00596e2eff6d4b02af8b6d8557d41990e6f50518ead0fa01fb -R 1736d98e99a4d046468766a1a31c6936 +P 59789fe1e745bb6f81898176e7e9c6064ac9f4bbefb4dc3c8f3e4c1379568f69 +R 5dab58ddb6f58a52bd1b258cb5165dfd U drh -Z b9e8c09744bf10f890ccfa1fbf1f1b9a +Z 6423624c0497dbe7560341f194996237 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 7e90177ba2..6154315b41 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -59789fe1e745bb6f81898176e7e9c6064ac9f4bbefb4dc3c8f3e4c1379568f69 \ No newline at end of file +c0f9ebab5455d8541a562122d3270b95ce571c3fd870b0048dda2b036c2b66c0 \ No newline at end of file diff --git a/src/select.c b/src/select.c index 5e90781eff..111e995cf1 100644 --- a/src/select.c +++ b/src/select.c @@ -4325,6 +4325,7 @@ static int flattenSubquery( if( pSrc->nSrc>1 ){ if( pParse->nSelect>500 ) return 0; + if( OptimizationDisabled(db, SQLITE_FlttnUnionAll) ) return 0; aCsrMap = sqlite3DbMallocZero(db, ((i64)pParse->nTab+1)*sizeof(int)); if( aCsrMap ) aCsrMap[0] = pParse->nTab; } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index ec465cdb33..d396f24650 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -1780,6 +1780,7 @@ struct sqlite3 { #define SQLITE_BloomPulldown 0x00100000 /* Run Bloom filters early */ #define SQLITE_BalancedMerge 0x00200000 /* Balance multi-way merges */ #define SQLITE_ReleaseReg 0x00400000 /* Use OP_ReleaseReg for testing */ +#define SQLITE_FlttnUnionAll 0x00800000 /* Disable the UNION ALL flattener */ #define SQLITE_AllOpts 0xffffffff /* All optimizations */ /*