mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-14 00:22:38 +03:00
Make a separate limb in the EXPLAIN QUERY PLAN output for the various lines
associated with the OR-optimization. FossilOrigin-Name: 75ac7b4e4fd0811ca80c719badacff207e0bbd00ac64dde3b3d4ec676fad472d
This commit is contained in:
@@ -242,6 +242,7 @@ do_setup_rec_test $tn.12.1 {
|
||||
} {
|
||||
CREATE INDEX t7_idx_00000062 ON t7(b);
|
||||
CREATE INDEX t7_idx_00000061 ON t7(a);
|
||||
MULTI-INDEX OR
|
||||
SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?)
|
||||
SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
|
||||
}
|
||||
|
||||
29
manifest
29
manifest
@@ -1,5 +1,5 @@
|
||||
C In\sORDER\sBY\sLIMIT\squeries,\stry\sto\sevaluate\sthe\sORDER\sBY\sterms\sfirst,\sand\sit\nit\sbecomes\sclear\sthat\sthe\srow\swill\snot\scome\sin\sunder\sthe\sLIMIT,\sthen\sskip\nevaluation\sof\sthe\sother\scolumns.
|
||||
D 2018-05-03T23:20:06.057
|
||||
C Make\sa\sseparate\slimb\sin\sthe\sEXPLAIN\sQUERY\sPLAN\soutput\sfor\sthe\svarious\slines\nassociated\swith\sthe\sOR-optimization.
|
||||
D 2018-05-04T00:39:43.856
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439
|
||||
@@ -44,7 +44,7 @@ F ext/async/sqlite3async.c 0f3070cc3f5ede78f2b9361fb3b629ce200d7d74
|
||||
F ext/async/sqlite3async.h f489b080af7e72aec0e1ee6f1d98ab6cf2e4dcef
|
||||
F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
|
||||
F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
|
||||
F ext/expert/expert1.test 81c8834822181d009c08b18d2afb3b0fce8167a8bbbf23496a0e598d2b21623d
|
||||
F ext/expert/expert1.test 87e54effda905d991edfe4bcd28098460a568246129ab7263f71b25420ea727f
|
||||
F ext/expert/sqlite3expert.c 95fdee74be2912d962951d984f1123e55d3f44bd643da7a48ff6ea9426a47f69
|
||||
F ext/expert/sqlite3expert.h af6354f8ee5c9e025024e63fec3bd640a802afcc3099a44d804752cf0791d811
|
||||
F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72
|
||||
@@ -579,7 +579,7 @@ F src/wal.h 8de5d2d3de0956d6f6cb48c83a4012d5f227b8fe940f3a349a4b7e85ebcb492a
|
||||
F src/walker.c da987a20d40145c0a03c07d8fefcb2ed363becc7680d0500d9c79915591f5b1f
|
||||
F src/where.c aa94ef44ef36763817ca952e68c03db7eee5e2d4f1f0c3a98823a58c074157bd
|
||||
F src/whereInt.h 2610cb87dd95509995b63decc674c60f2757697a206cfe0c085ee53d9c43cfff
|
||||
F src/wherecode.c 3368f0797a4b166e0773a4137d270d92ddcbce91618b11d1e9f11f7c39f33068
|
||||
F src/wherecode.c 300f945eb4552fb82ccf237b34dccb22f47522882faa9adcc04388e6e3f1d4b0
|
||||
F src/whereexpr.c e90b2e76dcabc81edff56633bf281bc01d93b71e0c81482dc06925ce39f5844a
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
|
||||
@@ -646,7 +646,7 @@ F test/badutf2.test f5bc7f2d280670ecd79b9cf4f0f1760c607fe51f
|
||||
F test/bc_common.tcl b5e42d80305be95697e6370e015af571e5333a1c
|
||||
F test/bestindex1.test 852170bddbb21daa121fabcc274640ff83d7d8705912e8b5fe7ed2c5a9a9224a
|
||||
F test/bestindex2.test 9a0ccd320b6525eec3a706aae6cdab7e1b7b5abca75027e39f39f755e76e5928
|
||||
F test/bestindex3.test 92a34c82f1ae245ef71f8c999f50a9dccd097a310cb070244c7b5cd0d2e07d73
|
||||
F test/bestindex3.test 001788a114ad96d81d5154fe77c7f1e26e84b3a2b5635ca29e4f96f6decc534e
|
||||
F test/bestindex4.test 4cb5ff7dbaebadb87d366f51969271778423b455
|
||||
F test/bestindex5.test 412b42f8036b28d8b2f3534d89389ad946a4b1a65a12263f51936f7424296f1b
|
||||
F test/between.test 34d375fb5ce1ae283ffe82b6b233e9f38e84fc6c
|
||||
@@ -723,7 +723,7 @@ F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454
|
||||
F test/corruptI.test 075fe1d75aa1d84e2949be56b6264376c41502e4
|
||||
F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
|
||||
F test/corruptK.test 91550557849244a9904f4e090052e3f2c1c3f1106840d58b00ffaa3a8c2d3fc0
|
||||
F test/cost.test dadd9905a9f34631a1821ff3d1b3e571ebad8afcd14ba0dca6d0818d9fd91237
|
||||
F test/cost.test b37db8a10d467a69e71a9f3d40bbb266c2f587742b37c6912f6e3f7185a0e216
|
||||
F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c
|
||||
F test/coveridxscan.test 5ec98719a2e2914e8908dc75f7247d9b54a26df04625f846ac7900d5483f7296
|
||||
F test/crash.test fb9dc4a02dcba30d4aa5c2c226f98b220b2b959f
|
||||
@@ -791,7 +791,7 @@ F test/enc.test e54531cd6bf941ee6760be041dff19a104c7acea
|
||||
F test/enc2.test 83437a79ba1545a55fb549309175c683fb334473
|
||||
F test/enc3.test 6807f7a7740a00361ca8d0ccd66bc60c8dc5f2b6
|
||||
F test/enc4.test c8f1ce3618508fd0909945beb8b8831feef2c020
|
||||
F test/eqp.test 2ac18a1d6aa0a0a8f0eea1cc0ba7d63391e2f968a47f59643f889c7c87d238a4
|
||||
F test/eqp.test 4fd69d25f21d8679f5fce13e639975879d89abf6acce4bd9cede133b7482aba7
|
||||
F test/errmsg.test eae9f091eb39ce7e20305de45d8e5d115b68fa856fba4ea6757b6ca3705ff7f9
|
||||
F test/eval.test a64c9105d6ff163df7cf09d6ac29cdad5922078c
|
||||
F test/exclusive.test 1206b87e192497d78c7f35552e86a9d05421498da300fb1cce5ca5351ccde3c3
|
||||
@@ -1012,7 +1012,7 @@ F test/join.test 2ad9d7fe10e0cc06bc7803c22e5533be11cdadbc592f5f95d789a873b57a5a6
|
||||
F test/join2.test 10f7047e723ebd68b2f47189be8eed20451a6f665d8bf46f1774c640d1062417
|
||||
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
|
||||
F test/join4.test 1a352e4e267114444c29266ce79e941af5885916
|
||||
F test/join5.test 196e0cbb552dd91815a43b5a26b64d40bdf9ff881c7a8413821dbd5f7154e3f8
|
||||
F test/join5.test 5a2da0c3ea852a7063d3e72fc7d5a04a6de5ef6e6d85092582f69033f7459adc
|
||||
F test/join6.test cfe6503791ceb0cbb509966740286ec423cbf10b
|
||||
F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
|
||||
F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
|
||||
@@ -1588,9 +1588,9 @@ F test/where3.test 2341a294e17193a6b1699ea7f192124a5286ca6acfcc3f4b06d16c931fbcd
|
||||
F test/where4.test 4a371bfcc607f41d233701bdec33ac2972908ba8
|
||||
F test/where5.test fdf66f96d29a064b63eb543e28da4dfdccd81ad2
|
||||
F test/where6.test 5da5a98cec820d488e82708301b96cb8c18a258b
|
||||
F test/where7.test 9bfbfdf0ee238f15a6eea29060f4bb22e8b43b724efe67fd8bf6febfbe54429d
|
||||
F test/where7.test e579da972eb3372edc9de850efc221848c763f9e4feafc8426d84a4453b92b23
|
||||
F test/where8.test 461ca40265ed996a6305da99bb024b0e41602bb586acf544c08f95922358e49f
|
||||
F test/where9.test 74f9dfddb42016d13b6ab0f6c943d7b993da9b2f7303faa2d465e02e340c2b5e
|
||||
F test/where9.test ad2ddb339d10d324763c3da60502b8631f15a2397b869192fbd4e82f40e167d3
|
||||
F test/whereA.test 6c6a420ca7d313242f9b1bd471dc80e4d0f8323700ba9c78df0bb843d4daa3b4
|
||||
F test/whereB.test 0def95db3bdec220a731c7e4bec5930327c1d8c5
|
||||
F test/whereC.test cae295158703cb3fc23bf1a108a9ab730efff0f6
|
||||
@@ -1599,7 +1599,7 @@ F test/whereE.test b3a055eef928c992b0a33198a7b8dc10eea5ad2f
|
||||
F test/whereF.test 3d9412b1199d3e2bed34fcb76b4c48d0bf4df95d27e3f8dd27b6f8b4716d0d89
|
||||
F test/whereG.test 0158783235a6dd82fc0e37652b8522b186b9510594ac0a4bff0c4101b4396a52
|
||||
F test/whereH.test e4b07f7a3c2f5d31195cd33710054c78667573b2
|
||||
F test/whereI.test 0f30efab13000309f340cada83f5cf888814de0d056431fb2f0251a91c58becf
|
||||
F test/whereI.test b7769ee8dbefd987fb266715fee887f05f9ff180016b06fca7fa402df739193b
|
||||
F test/whereJ.test 88287550f6ee604422403b053455b1ad894eeaa5c35d348532dfa1439286cb9a
|
||||
F test/whereK.test f8e3cf26a8513ecc7f514f54df9f0572c046c42b
|
||||
F test/wherefault.test 1374c3aa198388925246475f84ad4cd5f9528864
|
||||
@@ -1727,8 +1727,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 81ab5e0d106fb9f2de80d17c8167d8542c6721b8d7ec69c43e1571c2dcadeddd ce4ef46058f4aaea6623a41255a2e4b69bb24f16a287391df48f6bacdb4c4989
|
||||
R df0ac85de3cdeeeca99ef241c3f826a6
|
||||
T +closed ce4ef46058f4aaea6623a41255a2e4b69bb24f16a287391df48f6bacdb4c4989
|
||||
P c381f0ea57002a264fd958b28e4921cb9c9e73a10fb592f6bb64e6bc9bd16d39
|
||||
R 7ee652618bc90464537faa57c51e2376
|
||||
U drh
|
||||
Z e934c97462a3a7876abf79aae9b0d67e
|
||||
Z 3b006aad05b3a8fada8579b5e6d167ef
|
||||
|
||||
@@ -1 +1 @@
|
||||
c381f0ea57002a264fd958b28e4921cb9c9e73a10fb592f6bb64e6bc9bd16d39
|
||||
75ac7b4e4fd0811ca80c719badacff207e0bbd00ac64dde3b3d4ec676fad472d
|
||||
@@ -1934,6 +1934,7 @@ Bitmask sqlite3WhereCodeOneLoopStart(
|
||||
** sub-WHERE clause is to to invoke the main loop body as a subroutine.
|
||||
*/
|
||||
wctrlFlags = WHERE_OR_SUBCLAUSE | (pWInfo->wctrlFlags & WHERE_SEEK_TABLE);
|
||||
ExplainQueryPlan((pParse, 1, "MULTI-INDEX OR"));
|
||||
for(ii=0; ii<pOrWc->nTerm; ii++){
|
||||
WhereTerm *pOrTerm = &pOrWc->a[ii];
|
||||
if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){
|
||||
@@ -2054,6 +2055,7 @@ Bitmask sqlite3WhereCodeOneLoopStart(
|
||||
}
|
||||
}
|
||||
}
|
||||
ExplainQueryPlanPop(pParse);
|
||||
pLevel->u.pCovidx = pCov;
|
||||
if( pCov ) pLevel->iIdxCur = iCovCur;
|
||||
if( pAndExpr ){
|
||||
|
||||
@@ -89,6 +89,7 @@ do_eqp_test 1.3 {
|
||||
SELECT * FROM t1 WHERE a = 'abc' OR b = 'def';
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a EQ ?
|
||||
`--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
|
||||
}
|
||||
@@ -97,6 +98,7 @@ do_eqp_test 1.4 {
|
||||
SELECT * FROM t1 WHERE a LIKE 'abc%' OR b = 'def';
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a LIKE ?
|
||||
`--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
|
||||
}
|
||||
@@ -147,6 +149,7 @@ ifcapable !icu {
|
||||
SELECT * FROM t2 WHERE x LIKE 'abc%' OR y = 'def'
|
||||
} [string map {"\n " \n} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t2 USING INDEX t2x (x>? AND x<?)
|
||||
`--SEARCH TABLE t2 USING INDEX t2y (y=?)
|
||||
}]
|
||||
|
||||
@@ -57,9 +57,10 @@ do_eqp_test 3.2 {
|
||||
ORDER BY a;
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t5 USING INDEX t5b (b=?)
|
||||
|--SEARCH TABLE t5 USING INDEX t5c (c=?)
|
||||
|--SEARCH TABLE t5 USING INDEX t5d (d=?)
|
||||
|--MULTI-INDEX OR
|
||||
| |--SEARCH TABLE t5 USING INDEX t5b (b=?)
|
||||
| |--SEARCH TABLE t5 USING INDEX t5c (c=?)
|
||||
| `--SEARCH TABLE t5 USING INDEX t5d (d=?)
|
||||
`--USE TEMP B-TREE FOR ORDER BY
|
||||
}
|
||||
|
||||
@@ -122,8 +123,9 @@ do_eqp_test 6.2 {
|
||||
SELECT a FROM t3 WHERE (b BETWEEN 2 AND 4) OR c=100 ORDER BY a
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t3 USING INDEX t3i1 (b>? AND b<?)
|
||||
|--SEARCH TABLE t3 USING INDEX t3i2 (c=?)
|
||||
|--MULTI-INDEX OR
|
||||
| |--SEARCH TABLE t3 USING INDEX t3i1 (b>? AND b<?)
|
||||
| `--SEARCH TABLE t3 USING INDEX t3i2 (c=?)
|
||||
`--USE TEMP B-TREE FOR ORDER BY
|
||||
}
|
||||
|
||||
@@ -146,8 +148,9 @@ do_eqp_test 7.2 {
|
||||
ORDER BY a
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)
|
||||
|--SEARCH TABLE t1 USING INDEX t1b (b=?)
|
||||
|--MULTI-INDEX OR
|
||||
| |--SEARCH TABLE t1 USING INDEX t1b (b>? AND b<?)
|
||||
| `--SEARCH TABLE t1 USING INDEX t1b (b=?)
|
||||
`--USE TEMP B-TREE FOR ORDER BY
|
||||
}
|
||||
|
||||
|
||||
@@ -44,8 +44,9 @@ do_eqp_test 1.2 {
|
||||
SELECT * FROM t2, t1 WHERE t1.a=1 OR t1.b=2;
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t1 USING INDEX i1 (a=?)
|
||||
|--SEARCH TABLE t1 USING INDEX i2 (b=?)
|
||||
|--MULTI-INDEX OR
|
||||
| |--SEARCH TABLE t1 USING INDEX i1 (a=?)
|
||||
| `--SEARCH TABLE t1 USING INDEX i2 (b=?)
|
||||
`--SCAN TABLE t2
|
||||
}
|
||||
do_eqp_test 1.3 {
|
||||
@@ -53,6 +54,7 @@ do_eqp_test 1.3 {
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SCAN TABLE t2
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t1 USING INDEX i1 (a=?)
|
||||
`--SEARCH TABLE t1 USING INDEX i2 (b=?)
|
||||
}
|
||||
|
||||
@@ -266,6 +266,7 @@ do_eqp_test 7.2 {
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SCAN TABLE t1
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
|
||||
`--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
|
||||
}
|
||||
|
||||
@@ -23352,8 +23352,9 @@ do_eqp_test where7-3.2 {
|
||||
ORDER BY t302.c5 LIMIT 200;
|
||||
} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t301 USING COVERING INDEX t301_c4 (c4=?)
|
||||
|--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
|
||||
|--MULTI-INDEX OR
|
||||
| |--SEARCH TABLE t301 USING COVERING INDEX t301_c4 (c4=?)
|
||||
| `--SEARCH TABLE t301 USING INTEGER PRIMARY KEY (rowid=?)
|
||||
|--SEARCH TABLE t302 USING INDEX t302_c8_c3 (c8=? AND c3>?)
|
||||
`--USE TEMP B-TREE FOR ORDER BY
|
||||
}
|
||||
|
||||
@@ -363,6 +363,7 @@ ifcapable explain {
|
||||
} [string map {"\n " \n} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t2 USING INDEX t2d (d=?)
|
||||
`--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
|
||||
}]
|
||||
@@ -373,6 +374,7 @@ ifcapable explain {
|
||||
} [string map {"\n " \n} {
|
||||
QUERY PLAN
|
||||
|--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t2 USING INDEX t2d (d=?)
|
||||
`--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
|
||||
}]
|
||||
@@ -453,6 +455,7 @@ do_eqp_test where9-5.1 {
|
||||
SELECT a FROM t1 WHERE b>1000 AND (c=31031 OR d IS NULL)
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t1 USING INDEX t1c (c=?)
|
||||
`--SEARCH TABLE t1 USING INDEX t1d (d=?)
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ do_eqp_test 1.1 {
|
||||
SELECT a FROM t1 WHERE b='b' OR c='x'
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t1 USING INDEX i1 (b=?)
|
||||
`--SEARCH TABLE t1 USING INDEX i2 (c=?)
|
||||
}
|
||||
@@ -59,6 +60,7 @@ do_eqp_test 2.1 {
|
||||
SELECT a FROM t2 WHERE b='b' OR c='x'
|
||||
} {
|
||||
QUERY PLAN
|
||||
`--MULTI-INDEX OR
|
||||
|--SEARCH TABLE t2 USING INDEX i3 (b=?)
|
||||
`--SEARCH TABLE t2 USING INDEX i4 (c=?)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user