|
10043 | 10043 | ]
|
10044 | 10044 | }
|
10045 | 10045 | ]
|
| 10046 | + }, |
| 10047 | + { |
| 10048 | + "Name": "TestAdditionOtherConditionsRemained4OuterJoin", |
| 10049 | + "Cases": [ |
| 10050 | + { |
| 10051 | + "SQL": "SELECT `queries_identifier`.`id`, `queries_identifier`.`name` FROM `queries_identifier` LEFT OUTER JOIN `queries_channel` ON (`queries_identifier`.`id` = `queries_channel`.`identifier_id`) INNER JOIN `queries_program` ON (`queries_identifier`.`id` = `queries_program`.`identifier_id`) WHERE ((`queries_channel`.`id` = 5 AND `queries_program`.`id` = 9) OR `queries_program`.`id` = 8) ORDER BY `queries_identifier`.`id` ASC", |
| 10052 | + "Output": [ |
| 10053 | + "13 i1" |
| 10054 | + ] |
| 10055 | + }, |
| 10056 | + { |
| 10057 | + "SQL": "SELECT `queries_identifier`.`id`, `queries_identifier`.`name` FROM `queries_identifier` RIGHT OUTER JOIN `queries_channel` ON (`queries_identifier`.`id` = `queries_channel`.`identifier_id`) INNER JOIN `queries_program` ON (`queries_identifier`.`id` = `queries_program`.`identifier_id`) WHERE ((`queries_channel`.`id` = 5 AND `queries_program`.`id` = 9) OR `queries_program`.`id` = 8) ORDER BY `queries_identifier`.`id` ASC", |
| 10058 | + "Output": [ |
| 10059 | + "13 i1" |
| 10060 | + ] |
| 10061 | + }, |
| 10062 | + { |
| 10063 | + "SQL": "explain format = 'brief' SELECT `queries_identifier`.`id`, `queries_identifier`.`name` FROM `queries_identifier` LEFT OUTER JOIN `queries_channel` ON (`queries_identifier`.`id` = `queries_channel`.`identifier_id`) INNER JOIN `queries_program` ON (`queries_identifier`.`id` = `queries_program`.`identifier_id`) WHERE ((`queries_channel`.`id` = 5 AND `queries_program`.`id` = 9) OR `queries_program`.`id` = 8) ORDER BY `queries_identifier`.`id` ASC;", |
| 10064 | + "Output": [ |
| 10065 | + "Sort 2.50 root test.queries_identifier.id", |
| 10066 | + "└─Projection 2.50 root test.queries_identifier.id, test.queries_identifier.name", |
| 10067 | + " └─Selection 2.50 root or(and(eq(test.queries_channel.id, 5), eq(test.queries_program.id, 9)), eq(test.queries_program.id, 8))", |
| 10068 | + " └─IndexJoin 3.12 root left outer join, inner:IndexReader, outer key:test.queries_identifier.id, inner key:test.queries_channel.identifier_id, equal cond:eq(test.queries_identifier.id, test.queries_channel.identifier_id)", |
| 10069 | + " ├─IndexHashJoin(Build) 2.50 root inner join, inner:TableReader, outer key:test.queries_program.identifier_id, inner key:test.queries_identifier.id, equal cond:eq(test.queries_program.identifier_id, test.queries_identifier.id)", |
| 10070 | + " │ ├─Batch_Point_Get(Build) 2.00 root table:queries_program handle:[8 9], keep order:false, desc:false", |
| 10071 | + " │ └─TableReader(Probe) 2.00 root data:TableRangeScan", |
| 10072 | + " │ └─TableRangeScan 2.00 cop[tikv] table:queries_identifier range: decided by [test.queries_program.identifier_id], keep order:false, stats:pseudo", |
| 10073 | + " └─IndexReader(Probe) 2.50 root index:IndexRangeScan", |
| 10074 | + " └─IndexRangeScan 2.50 cop[tikv] table:queries_channel, index:identifier_id(identifier_id) range: decided by [eq(test.queries_channel.identifier_id, test.queries_identifier.id)], keep order:false, stats:pseudo" |
| 10075 | + ] |
| 10076 | + }, |
| 10077 | + { |
| 10078 | + "SQL": "explain format='brief' select * from t left join t1 on t.a=t1.a inner join t2 on t.a=t2.a and t2.c = 100 left join t3 on t2.a=t3.a and t3.b > 1 left join t4 on t2.a = t4.a where (t2.b > 100 or t.a > 10 or t1.b < 10)", |
| 10079 | + "Output": [ |
| 10080 | + "Projection 19.51 root test.t.a, test.t1.a, test.t1.b, test.t2.a, test.t2.b, test.t2.c, test.t3.a, test.t3.b, test.t4.a, test.t4.b", |
| 10081 | + "└─Selection 19.51 root or(gt(test.t2.b, 100), or(gt(test.t.a, 10), lt(test.t1.b, 10))), or(gt(test.t2.b, 100), or(gt(test.t2.a, 10), lt(test.t1.b, 10)))", |
| 10082 | + " └─HashJoin 24.39 root left outer join, equal:[eq(test.t2.a, test.t4.a)]", |
| 10083 | + " ├─HashJoin(Build) 19.51 root left outer join, equal:[eq(test.t.a, test.t1.a)]", |
| 10084 | + " │ ├─HashJoin(Build) 15.61 root inner join, equal:[eq(test.t2.a, test.t.a)]", |
| 10085 | + " │ │ ├─HashJoin(Build) 12.49 root left outer join, equal:[eq(test.t2.a, test.t3.a)]", |
| 10086 | + " │ │ │ ├─TableReader(Build) 9.99 root data:Selection", |
| 10087 | + " │ │ │ │ └─Selection 9.99 cop[tikv] eq(test.t2.c, 100), not(isnull(test.t2.a))", |
| 10088 | + " │ │ │ │ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", |
| 10089 | + " │ │ │ └─TableReader(Probe) 3330.00 root data:Selection", |
| 10090 | + " │ │ │ └─Selection 3330.00 cop[tikv] gt(test.t3.b, 1), not(isnull(test.t3.a))", |
| 10091 | + " │ │ │ └─TableFullScan 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo", |
| 10092 | + " │ │ └─TableReader(Probe) 9990.00 root data:Selection", |
| 10093 | + " │ │ └─Selection 9990.00 cop[tikv] not(isnull(test.t.a))", |
| 10094 | + " │ │ └─TableFullScan 10000.00 cop[tikv] table:t keep order:false, stats:pseudo", |
| 10095 | + " │ └─TableReader(Probe) 9990.00 root data:Selection", |
| 10096 | + " │ └─Selection 9990.00 cop[tikv] not(isnull(test.t1.a))", |
| 10097 | + " │ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", |
| 10098 | + " └─TableReader(Probe) 9990.00 root data:Selection", |
| 10099 | + " └─Selection 9990.00 cop[tikv] not(isnull(test.t4.a))", |
| 10100 | + " └─TableFullScan 10000.00 cop[tikv] table:t4 keep order:false, stats:pseudo" |
| 10101 | + ] |
| 10102 | + } |
| 10103 | + ] |
10046 | 10104 | }
|
10047 | 10105 | ]
|
0 commit comments