[ { "Name": "TestCompIndexInExprCorrCol", "Cases": [ { "SQL": "explain select t.e in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c in (1, 2) and s.d = t.a and s.a = t1.a) from t", "Result": [ "Projection_11 2.00 root Column#17", "└─Apply_13 2.00 root CARTESIAN left outer semi join, other cond:eq(test.t.e, Column#16)", " ├─TableReader_15(Build) 2.00 root data:TableFullScan_14", " │ └─TableFullScan_14 2.00 cop[tikv] table:t keep order:false", " └─StreamAgg_20(Probe) 1.00 root funcs:count(1)->Column#16", " └─IndexJoin_36 2.00 root inner join, inner:TableReader_35, outer key:test.t.a, inner key:test.t.a, equal cond:eq(test.t.a, test.t.a)", " ├─IndexReader_29(Build) 2.00 root index:IndexRangeScan_28", " │ └─IndexRangeScan_28 2.00 cop[tikv] table:s, index:idx(b, c, d) range: decided by [eq(test.t.b, 1) in(test.t.c, 1, 2) eq(test.t.d, test.t.a)], keep order:false", " └─TableReader_35(Probe) 1.00 root data:TableRangeScan_34", " └─TableRangeScan_34 1.00 cop[tikv] table:t1 range: decided by [test.t.a], keep order:false" ] }, { "SQL": "select t.e in (select count(*) from t s use index(idx), t t1 where s.b = 1 and s.c in (1, 2) and s.d = t.a and s.a = t1.a) from t", "Result": [ "1", "1" ] } ] }, { "Name": "TestIndexStringIsTrueRange", "Cases": [ { "SQL": "explain select * from t0 where c0", "Result": [ "TableReader_7 0.80 root data:Selection_6", "└─Selection_6 0.80 cop[tikv] test.t0.c0", " └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false" ] }, { "SQL": "explain select * from t0 where c0 and c0 > '123'", "Result": [ "IndexReader_7 1.00 root index:Selection_6", "└─Selection_6 1.00 cop[tikv] test.t0.c0", " └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:(\"123\",+inf], keep order:false" ] }, { "SQL": "explain select * from t0 where c0 and c0 <> '123'", "Result": [ "IndexReader_7 1.00 root index:Selection_6", "└─Selection_6 1.00 cop[tikv] test.t0.c0", " └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[-inf,\"123\"), (\"123\",+inf], keep order:false" ] }, { "SQL": "explain select * from t0 where c0 is true", "Result": [ "TableReader_7 0.80 root data:Selection_6", "└─Selection_6 0.80 cop[tikv] istrue(cast(test.t0.c0))", " └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false" ] }, { "SQL": "explain select * from t0 where c0 is false", "Result": [ "TableReader_7 0.80 root data:Selection_6", "└─Selection_6 0.80 cop[tikv] isfalse(cast(test.t0.c0))", " └─TableFullScan_5 1.00 cop[tikv] table:t0 keep order:false" ] }, { "SQL": "explain select * from t0 where c0 and c0 in ('123','456','789')", "Result": [ "IndexReader_7 1.00 root index:Selection_6", "└─Selection_6 1.00 cop[tikv] test.t0.c0", " └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[\"123\",\"123\"], [\"456\",\"456\"], [\"789\",\"789\"], keep order:false" ] }, { "SQL": "explain SELECT * FROM t0 WHERE ('a' != t0.c0) AND t0.c0;", "Result": [ "IndexReader_7 1.00 root index:Selection_6", "└─Selection_6 1.00 cop[tikv] test.t0.c0", " └─IndexRangeScan_5 1.00 cop[tikv] table:t0, index:i0(c0) range:[-inf,\"a\"), (\"a\",+inf], keep order:false" ] } ] }, { "Name": "TestPrefixIndexMultiColDNF", "Cases": [ { "SQL": "select * from t2 where t='aaaa';", "Plan": [ "IndexLookUp_11 10.00 root ", "├─IndexRangeScan_8(Build) 10.00 cop[tikv] table:t2, index:t(t) range:[\"aaa\",\"aaa\"], keep order:false, stats:pseudo", "└─Selection_10(Probe) 10.00 cop[tikv] eq(test.t2.t, \"aaaa\")", " └─TableRowIDScan_9 10.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "Result": [ "1 aaaa" ] }, { "SQL": "select * from t2 where t='aaaa' or t = 'a';", "Plan": [ "IndexLookUp_11 16.00 root ", "├─IndexRangeScan_8(Build) 20.00 cop[tikv] table:t2, index:t(t) range:[\"a\",\"a\"], [\"aaa\",\"aaa\"], keep order:false, stats:pseudo", "└─Selection_10(Probe) 16.00 cop[tikv] or(eq(test.t2.t, \"aaaa\"), eq(test.t2.t, \"a\"))", " └─TableRowIDScan_9 20.00 cop[tikv] table:t2 keep order:false, stats:pseudo" ], "Result": [ "1 aaaa", "2 a" ] }, { "SQL": "select * from t2 where t='aaaa';", "Plan": [ "TableReader_7 1.00 root data:Selection_6", "└─Selection_6 1.00 cop[tikv] eq(test.t2.t, \"aaaa\")", " └─TableRangeScan_5 2.00 cop[tikv] table:t2 range:[0,+inf], keep order:false" ], "Result": [ "1 aaaa" ] }, { "SQL": "select * from t2 where t='aaaa' or t = 'a';", "Plan": [ "TableReader_7 1.60 root data:Selection_6", "└─Selection_6 1.60 cop[tikv] or(eq(test.t2.t, \"aaaa\"), eq(test.t2.t, \"a\"))", " └─TableRangeScan_5 2.00 cop[tikv] table:t2 range:[0,+inf], keep order:false" ], "Result": [ "1 aaaa", "2 a" ] } ] } ]