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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 delta 39655 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

o1fym*G%I%OwN|F7`uYP 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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