]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make a separate limb in the EXPLAIN QUERY PLAN output for the various lines
authordrh <drh@noemail.net>
Fri, 4 May 2018 00:39:43 +0000 (00:39 +0000)
committerdrh <drh@noemail.net>
Fri, 4 May 2018 00:39:43 +0000 (00:39 +0000)
associated with the OR-optimization.

FossilOrigin-Name: 75ac7b4e4fd0811ca80c719badacff207e0bbd00ac64dde3b3d4ec676fad472d

ext/expert/expert1.test
manifest
manifest.uuid
src/wherecode.c
test/bestindex3.test
test/cost.test
test/eqp.test
test/join5.test
test/where7.test
test/where9.test
test/whereI.test

index 1eab80e070a10fd103e6f2f379975843b19f0b9b..6db6944083cc387e9a5aeb6d5fbcdd2466acb39c 100644 (file)
@@ -242,8 +242,9 @@ do_setup_rec_test $tn.12.1 {
 } {
   CREATE INDEX t7_idx_00000062 ON t7(b);
   CREATE INDEX t7_idx_00000061 ON t7(a);
-  SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?) 
-  SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
+  MULTI-INDEX OR
+    SEARCH TABLE t7 USING INDEX t7_idx_00000061 (a=?) 
+    SEARCH TABLE t7 USING INDEX t7_idx_00000062 (b=?)
 }
 
 # rowid terms.
index 10dd58464e34168c1631275e62e8febeb0c8531c..d74d678251feb0403c34bf086127431707308f6e 100644 (file)
--- a/manifest
+++ b/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
index 7d6d9e2a0060a171c50f3db471a78d107de85f58..49b9590029a07845740b5cfdde45eca2eea9bc85 100644 (file)
@@ -1 +1 @@
-c381f0ea57002a264fd958b28e4921cb9c9e73a10fb592f6bb64e6bc9bd16d39
\ No newline at end of file
+75ac7b4e4fd0811ca80c719badacff207e0bbd00ac64dde3b3d4ec676fad472d
\ No newline at end of file
index 7f9933fad8cbe44021304f5c87e492a6a30ec43a..df45bd73e59ff04f80b18830eab138491ef7476b 100644 (file)
@@ -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 ){
index 32734ef1a0cee811f38d9c3cb7ef510dd7bd53c1..4b125d4df09e1c2b23fdef93b38e5babd378483b 100644 (file)
@@ -89,16 +89,18 @@ do_eqp_test 1.3 {
   SELECT * FROM t1 WHERE a = 'abc' OR b = 'def';
 } {
   QUERY PLAN
-  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a EQ ?
-  `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
+  `--MULTI-INDEX OR
+     |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a EQ ?
+     `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
 }
 
 do_eqp_test 1.4 {
   SELECT * FROM t1 WHERE a LIKE 'abc%' OR b = 'def';
 } {
   QUERY PLAN
-  |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a LIKE ?
-  `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
+  `--MULTI-INDEX OR
+     |--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:a LIKE ?
+     `--SCAN TABLE t1 VIRTUAL TABLE INDEX 0:b EQ ?
 }
 
 do_execsql_test 1.5 {
@@ -147,8 +149,9 @@ ifcapable !icu {
     SELECT * FROM t2 WHERE x LIKE 'abc%' OR y = 'def'
   } [string map {"\n  " \n} {
     QUERY PLAN
-    |--SEARCH TABLE t2 USING INDEX t2x (x>? AND x<?)
-    `--SEARCH TABLE t2 USING INDEX t2y (y=?)
+    `--MULTI-INDEX OR
+       |--SEARCH TABLE t2 USING INDEX t2x (x>? AND x<?)
+       `--SEARCH TABLE t2 USING INDEX t2y (y=?)
   }]
 }
 
index c2591b147a00e9dbed46abc7555373bb8b00f436..5d23e0ed7bcfb357f763301ca422a30bcf44e5df 100644 (file)
@@ -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
 }
 
index 4638c34aa49ae0b89b8d725360019a7f7ca635b2..5f397ef864714c7f3b06759bdf000a0985fe7145 100644 (file)
@@ -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,8 +54,9 @@ do_eqp_test 1.3 {
 } {
   QUERY PLAN
   |--SCAN TABLE t2
-  |--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=?)
 }
 do_eqp_test 1.3 {
   SELECT a FROM t1 ORDER BY a
index 043c626d4140f35bd384fc4a491e37acd4dab26c..2df66e7cf14abd23ab9d3157369a516f3ed1ba7c 100644 (file)
@@ -266,8 +266,9 @@ do_eqp_test 7.2 {
 } {
   QUERY PLAN
   |--SCAN TABLE t1
-  |--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
-  `--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
+  `--MULTI-INDEX OR
+     |--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
+     `--SEARCH TABLE t2 USING INDEX t2xy (x=? AND y=?)
 }
 
 do_execsql_test 7.3 {
index 983418ae2f5d31b69ce290a29d0c2bf6eaa453aa..5abd0a8bc6bd1ce3feab0c2873beca738069e59c 100644 (file)
@@ -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
 }
index c04c17fa95bea372a65bf2cf25a2ed56de7f36e9..87f5c1561527306f4f596993ab4edf1cc461b8ed 100644 (file)
@@ -363,8 +363,9 @@ ifcapable explain {
   } [string map {"\n  " \n} {
     QUERY PLAN
     |--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
-    |--SEARCH TABLE t2 USING INDEX t2d (d=?)
-    `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
+    `--MULTI-INDEX OR
+       |--SEARCH TABLE t2 USING INDEX t2d (d=?)
+       `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
   }]
   do_eqp_test where9-3.2 {
     SELECT coalesce(t2.a,9999)
@@ -373,8 +374,9 @@ ifcapable explain {
   } [string map {"\n  " \n} {
     QUERY PLAN
     |--SEARCH TABLE t1 USING INTEGER PRIMARY KEY (rowid=?)
-    |--SEARCH TABLE t2 USING INDEX t2d (d=?)
-    `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
+    `--MULTI-INDEX OR
+       |--SEARCH TABLE t2 USING INDEX t2d (d=?)
+       `--SEARCH TABLE t2 USING COVERING INDEX t2f (f=?)
   }]
 } 
 
@@ -453,8 +455,9 @@ do_eqp_test where9-5.1 {
   SELECT a FROM t1 WHERE b>1000 AND (c=31031 OR d IS NULL)
 } {
   QUERY PLAN
-  |--SEARCH TABLE t1 USING INDEX t1c (c=?)
-  `--SEARCH TABLE t1 USING INDEX t1d (d=?)
+  `--MULTI-INDEX OR
+     |--SEARCH TABLE t1 USING INDEX t1c (c=?)
+     `--SEARCH TABLE t1 USING INDEX t1d (d=?)
 }
 
 # In contrast, b=1000 is preferred over any OR-clause.
index 73dd9009aa9e105fdf91841c5ebee839e017e026..d08e62c376d4192cc92a7dc17f84b2382ad01156 100644 (file)
@@ -30,8 +30,9 @@ do_eqp_test 1.1 {
   SELECT a FROM t1 WHERE b='b' OR c='x'
 } {
   QUERY PLAN
-  |--SEARCH TABLE t1 USING INDEX i1 (b=?)
-  `--SEARCH TABLE t1 USING INDEX i2 (c=?)
+  `--MULTI-INDEX OR
+     |--SEARCH TABLE t1 USING INDEX i1 (b=?)
+     `--SEARCH TABLE t1 USING INDEX i2 (c=?)
 }
 
 do_execsql_test 1.2 {
@@ -59,8 +60,9 @@ do_eqp_test 2.1 {
   SELECT a FROM t2 WHERE b='b' OR c='x'
 } {
   QUERY PLAN
-  |--SEARCH TABLE t2 USING INDEX i3 (b=?)
-  `--SEARCH TABLE t2 USING INDEX i4 (c=?)
+  `--MULTI-INDEX OR
+     |--SEARCH TABLE t2 USING INDEX i3 (b=?)
+     `--SEARCH TABLE t2 USING INDEX i4 (c=?)
 }
 
 do_execsql_test 2.2 {