From 93ffb50fcda87d7c937fcaeef1bcb61591227b9d Mon Sep 17 00:00:00 2001 From: drh <> Date: Tue, 18 May 2021 19:10:10 +0000 Subject: [PATCH] In the MULTI-INDEX OR query plan, code for sub-expressions can sometimes be generated twice. But for some subqueries, generating code off of the same tree twice causes problems. So now MULTI-INDEX OR makes a copy of the sub-expressions it uses to avoid code-generating them more than once. dbsqlfuzz 9ebd2140e7206ff724e665f172faea28af801635. FossilOrigin-Name: 4a55f72542c8bcc80253aa77043314cecb29d73cb4f51aa80f7811e86cc8ef68 --- manifest | 20 ++++++++++---------- manifest.uuid | 2 +- src/select.c | 6 ++++++ src/vdbe.c | 2 +- src/wherecode.c | 9 ++++++++- test/fuzzdata8.db | Bin 2131968 -> 2260992 bytes test/where9.test | 19 ++++++++++++++++++- 7 files changed, 44 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 8977013c7f..cce7561db1 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\scomments\son\sthe\sgenerated\sopcodes.h\sfile. -D 2021-05-18T12:36:35.719 +C In\sthe\sMULTI-INDEX\sOR\squery\splan,\scode\sfor\ssub-expressions\scan\ssometimes\sbe\ngenerated\stwice.\s\sBut\sfor\ssome\ssubqueries,\sgenerating\scode\soff\sof\sthe\ssame\ntree\stwice\scauses\sproblems.\s\sSo\snow\sMULTI-INDEX\sOR\smakes\sa\scopy\sof\sthe\nsub-expressions\sit\suses\sto\savoid\scode-generating\sthem\smore\sthan\sonce.\ndbsqlfuzz\s9ebd2140e7206ff724e665f172faea28af801635. +D 2021-05-18T19:10:10.627 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -543,7 +543,7 @@ F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 F src/resolve.c 40e216d9a72e52841a9c8e0aec7d367bade8e2df17b804653b539b20c1ab5660 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c 0ba381ae7f9f4f84bed7d3a357703fd08b587fef6477f78953d8bcfe4e42328f +F src/select.c acf228163efe1f3f9137e47bc9b6ab9844846bb92a707f320d05b911f1b9ea4a F src/shell.c.in 1b32ba2918ede13b68df47c7b92b72ba0d06e68d384e78bb9d7456527271d400 F src/sqlite.h.in 5c950066775ca9efdaa49077c05d38d0bef6418f3bd07d2dce0210f1d2f3c326 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -615,7 +615,7 @@ F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048 F src/vacuum.c 492422c1463c076473bae1858799c7a0a5fe87a133d1223239447c422cd26286 -F src/vdbe.c 50d998ebf8fe6dcefa91348356aa3dbaf0bae641b074c9f6e8503960eab81324 +F src/vdbe.c 74491791630743ef5215a90e6ec94c0965577b9b7086b2180d2c7fa0954317a8 F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe F src/vdbeInt.h 58980223a32495ad059d10581b83e133abdc77248b1bab85c080cab8a13bd819 F src/vdbeapi.c d9e99daf59fec928986838b3389a7337e82fec6b3b5de30206cb99fb4661b94e @@ -632,7 +632,7 @@ F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac F src/where.c 32f41c3c93c6785e0077e3a2cdc669c3ccfe70173787847be77f294c18fc7dc3 F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b -F src/wherecode.c b4c21439f0549bb5c571214e08ddb5ec58d5e972f4b4c87c0cc79351edd43704 +F src/wherecode.c 110ed13049e0f1dc27e9dd942eb870417b36480cb7819302f5804cbcf9330b0e F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5 F src/window.c 0c910a222f357e3e175a998874abd12f3e2f312e10950d304f3d28b0fb6bc509 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@ -1055,7 +1055,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 0166b56fd7a6b9636a1d60ef0a060f86ddaecf99400a666bb6e5bbd7199ad1f2 -F test/fuzzdata8.db b8dd9fc73f09b2098d942fa225f99aa3bb5999d07917c75e29bb121c0012b444 +F test/fuzzdata8.db 5e616432bbdd9b27014463545cae06797790645021fbc650d28c994b4f02a6f5 F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test f64c4aef4c9e9edf1d6dc0d3f1e65dcc81e67c996403c88d14f09b74807a42bc @@ -1749,7 +1749,7 @@ F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2 F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b F test/where7.test ab41d53ce8f2a6919ea3d5b13cd1153c1375a8e3ddaa129b81781f9033981383 F test/where8.test 461ca40265ed996a6305da99bb024b0e41602bb586acf544c08f95922358e49f -F test/where9.test b1942ed1d4c4632ea99e135691371f33803428ee4092a462280338ab3347f916 +F test/where9.test 1ffb75edc50a8faa6e7bd77f8221d783febb00b44b0bdb32fb48cec6e38eca95 F test/whereA.test 9d1077b117f1b68d5f739d94f36956c36cf995eb87bb19b77b2e81af020edd20 F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5 F test/whereC.test cae295158703cb3fc23bf1a108a9ab730efff0f6 @@ -1913,7 +1913,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 304739d2382446e7b698d67377679168e46f0a19bb0794fdf22d0a0a84a8cbcc -R 488974183caf351481b145abe81d4cf1 +P f2a17f1fad08779486e4d50d0d9277c7f87a9558a53af1a68aa5fe2ec30e820e +R d1ee727748d372a9a4a6be0c1bffc86c U drh -Z 66f78faa347185fdfe747ad66ceffb44 +Z 41c8ad722578c7f47efc179345a7656e diff --git a/manifest.uuid b/manifest.uuid index 0dac44b6c6..f8eef81ae5 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f2a17f1fad08779486e4d50d0d9277c7f87a9558a53af1a68aa5fe2ec30e820e \ No newline at end of file +4a55f72542c8bcc80253aa77043314cecb29d73cb4f51aa80f7811e86cc8ef68 \ No newline at end of file diff --git a/src/select.c b/src/select.c index e18333e7b8..c73bad36ef 100644 --- a/src/select.c +++ b/src/select.c @@ -2748,6 +2748,7 @@ static int multiSelect( pPrior->iLimit = p->iLimit; pPrior->iOffset = p->iOffset; pPrior->pLimit = p->pLimit; + SELECTTRACE(1, pParse, p, ("multiSelect UNION ALL left...\n")); rc = sqlite3Select(pParse, pPrior, &dest); pPrior->pLimit = 0; if( rc ){ @@ -2765,6 +2766,7 @@ static int multiSelect( } } ExplainQueryPlan((pParse, 1, "UNION ALL")); + SELECTTRACE(1, pParse, p, ("multiSelect UNION ALL right...\n")); rc = sqlite3Select(pParse, p, &dest); testcase( rc!=SQLITE_OK ); pDelete = p->pPrior; @@ -2817,6 +2819,7 @@ static int multiSelect( */ assert( !pPrior->pOrderBy ); sqlite3SelectDestInit(&uniondest, priorOp, unionTab); + SELECTTRACE(1, pParse, p, ("multiSelect EXCEPT/UNION left...\n")); rc = sqlite3Select(pParse, pPrior, &uniondest); if( rc ){ goto multi_select_end; @@ -2836,6 +2839,7 @@ static int multiSelect( uniondest.eDest = op; ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE", sqlite3SelectOpName(p->op))); + SELECTTRACE(1, pParse, p, ("multiSelect EXCEPT/UNION right...\n")); rc = sqlite3Select(pParse, p, &uniondest); testcase( rc!=SQLITE_OK ); assert( p->pOrderBy==0 ); @@ -2896,6 +2900,7 @@ static int multiSelect( /* Code the SELECTs to our left into temporary table "tab1". */ sqlite3SelectDestInit(&intersectdest, SRT_Union, tab1); + SELECTTRACE(1, pParse, p, ("multiSelect INTERSECT left...\n")); rc = sqlite3Select(pParse, pPrior, &intersectdest); if( rc ){ goto multi_select_end; @@ -2912,6 +2917,7 @@ static int multiSelect( intersectdest.iSDParm = tab2; ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE", sqlite3SelectOpName(p->op))); + SELECTTRACE(1, pParse, p, ("multiSelect INTERSECT right...\n")); rc = sqlite3Select(pParse, p, &intersectdest); testcase( rc!=SQLITE_OK ); pDelete = p->pPrior; diff --git a/src/vdbe.c b/src/vdbe.c index 1d255d3ee8..54588b2a10 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -592,7 +592,7 @@ static void registerTrace(int iReg, Mem *p){ printf("\n"); sqlite3VdbeCheckMemInvariants(p); } -void sqlite3PrintMem(Mem *pMem){ +/**/ void sqlite3PrintMem(Mem *pMem){ memTracePrint(pMem); printf("\n"); fflush(stdout); diff --git a/src/wherecode.c b/src/wherecode.c index 507148d314..4d0ba880d1 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -2170,7 +2170,7 @@ Bitmask sqlite3WhereCodeOneLoopStart( /* The extra 0x10000 bit on the opcode is masked off and does not ** become part of the new Expr.op. However, it does make the ** op==TK_AND comparison inside of sqlite3PExpr() false, and this - ** prevents sqlite3PExpr() from implementing AND short-circuit + ** prevents sqlite3PExpr() from applying the AND short-circuit ** optimization, which we do not want here. */ pAndExpr = sqlite3PExpr(pParse, TK_AND|0x10000, 0, pAndExpr); } @@ -2186,10 +2186,16 @@ Bitmask sqlite3WhereCodeOneLoopStart( if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){ WhereInfo *pSubWInfo; /* Info for single OR-term scan */ Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */ + Expr *pDelete; /* Local copy of OR clause term */ int jmp1 = 0; /* Address of jump operation */ testcase( (pTabItem[0].fg.jointype & JT_LEFT)!=0 && !ExprHasProperty(pOrExpr, EP_FromJoin) ); /* See TH3 vtab25.400 and ticket 614b25314c766238 */ + pDelete = pOrExpr = sqlite3ExprDup(db, pOrExpr, 0); + if( db->mallocFailed ){ + sqlite3ExprDelete(db, pDelete); + continue; + } if( pAndExpr ){ pAndExpr->pLeft = pOrExpr; pOrExpr = pAndExpr; @@ -2304,6 +2310,7 @@ Bitmask sqlite3WhereCodeOneLoopStart( sqlite3WhereEnd(pSubWInfo); ExplainQueryPlanPop(pParse); } + sqlite3ExprDelete(db, pDelete); } } ExplainQueryPlanPop(pParse); diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index b39887db1ebd835f36e05ebc25dac8e3e43e783d..a5521775916979cff9b93273d0dd0cd3b0087d1b 100644 GIT binary patch delta 55794 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 diff --git a/test/where9.test b/test/where9.test index cb52b2b37d..429708f1fe 100644 --- a/test/where9.test +++ b/test/where9.test @@ -982,6 +982,23 @@ do_test where9-10.2 { } } {1 {} 1} - +# dbsqlfuzz 9df1d53c24c4c96af0dae15ee764897af415ac76 +# The MULTI-INDEX OR processing evaluates the same WHERE-clause sub-expression +# twice. But if that sub-expression contains a UNION ALL SELECT statement +# subject to query flattening, the sub-expression might be transformed in a +# way that it can only be code-generated once. An assert() will fail on +# the second attempt to generate code from the same sub-expression. +# The solution is to make a copy of sub-expressions used by MULTI-INDEX OR +# +reset_db +do_execsql_test where9-11.1 { + CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT); + CREATE TABLE t2_a(k INTEGER PRIMARY KEY, v TEXT); + CREATE TABLE t2_b(k INTEGER PRIMARY KEY, v TEXT); + CREATE VIEW t2 AS SELECT * FROM t2_a UNION ALL SELECT * FROM t2_b; + SELECT 1 FROM t1 JOIN t1 USING(a) + WHERE (a=1) + OR (a=2 AND (SELECT 4 FROM t2,(SELECT 5 FROM t1 ORDER BY a) WHERE a)); +} {} finish_test -- 2.47.2