]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add a new optimizer disabling bit to disable just the UNION ALL branch of the
authordrh <>
Mon, 25 Apr 2022 14:59:59 +0000 (14:59 +0000)
committerdrh <>
Mon, 25 Apr 2022 14:59:59 +0000 (14:59 +0000)
query flattener.

FossilOrigin-Name: c0f9ebab5455d8541a562122d3270b95ce571c3fd870b0048dda2b036c2b66c0

manifest
manifest.uuid
src/select.c
src/sqliteInt.h

index 7a9ad1dd3162ce02577f53051613b3cccdbde84c..b24cf29d3be4a58cfcb2e2df45ffdfbce3733fc7 100644 (file)
--- 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.
index 7e90177ba29cb6e15793fbde2bbcbd45ac0a8af4..6154315b4192e2ec254ee54d01b6902e84de3656 100644 (file)
@@ -1 +1 @@
-59789fe1e745bb6f81898176e7e9c6064ac9f4bbefb4dc3c8f3e4c1379568f69
\ No newline at end of file
+c0f9ebab5455d8541a562122d3270b95ce571c3fd870b0048dda2b036c2b66c0
\ No newline at end of file
index 5e90781effb433d099db54e5f4dfe144c7ec7c60..111e995cf1cb0327fa927246a871d89bb3039405 100644 (file)
@@ -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;
     }
index ec465cdb335707426e50751d84fad6b599663570..d396f2465032e312147e2573551d309d93b78db6 100644 (file)
@@ -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 */
 
 /*