|
2337 | 2337 | }, |
2338 | 2338 | { |
2339 | 2339 | "Name": "TestINMJHint", |
2340 | | - "Cases": null |
| 2340 | + "Cases": [ |
| 2341 | + { |
| 2342 | + "SQL": "select /*+ inl_merge_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", |
| 2343 | + "Plan": [ |
| 2344 | + "IndexMergeJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, other cond:eq(test.t1.b, test.t2.b)", |
| 2345 | + "├─TableReader(Build) 10000.00 root data:TableFullScan", |
| 2346 | + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", |
| 2347 | + "└─TableReader(Probe) 1.00 root data:TableRangeScan", |
| 2348 | + " └─TableRangeScan 1.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:true, stats:pseudo" |
| 2349 | + ], |
| 2350 | + "Result": [ |
| 2351 | + "1 1", |
| 2352 | + "2 <nil>" |
| 2353 | + ] |
| 2354 | + }, |
| 2355 | + { |
| 2356 | + "SQL": "select /*+ inl_hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", |
| 2357 | + "Plan": [ |
| 2358 | + "IndexHashJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.t2.b)", |
| 2359 | + "├─TableReader(Build) 10000.00 root data:TableFullScan", |
| 2360 | + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", |
| 2361 | + "└─TableReader(Probe) 1.00 root data:TableRangeScan", |
| 2362 | + " └─TableRangeScan 1.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:false, stats:pseudo" |
| 2363 | + ], |
| 2364 | + "Result": [ |
| 2365 | + "1 1", |
| 2366 | + "2 <nil>" |
| 2367 | + ] |
| 2368 | + }, |
| 2369 | + { |
| 2370 | + "SQL": "select /*+ inl_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", |
| 2371 | + "Plan": [ |
| 2372 | + "IndexJoin 12500.00 root left outer join, inner:TableReader, outer key:test.t1.a, inner key:test.t2.a, equal cond:eq(test.t1.a, test.t2.a), eq(test.t1.b, test.t2.b)", |
| 2373 | + "├─TableReader(Build) 10000.00 root data:TableFullScan", |
| 2374 | + "│ └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo", |
| 2375 | + "└─TableReader(Probe) 1.00 root data:TableRangeScan", |
| 2376 | + " └─TableRangeScan 1.00 cop[tikv] table:t2 range: decided by [test.t1.a], keep order:false, stats:pseudo" |
| 2377 | + ], |
| 2378 | + "Result": [ |
| 2379 | + "1 1", |
| 2380 | + "2 <nil>" |
| 2381 | + ] |
| 2382 | + }, |
| 2383 | + { |
| 2384 | + "SQL": "select /*+ hash_join(t2) */ t1.a, t2.a from t1 left join t2 on t1.a=t2.a and t1.b=t2.b", |
| 2385 | + "Plan": [ |
| 2386 | + "HashJoin 12500.00 root left outer join, equal:[eq(test.t1.a, test.t2.a) eq(test.t1.b, test.t2.b)]", |
| 2387 | + "├─TableReader(Build) 10000.00 root data:TableFullScan", |
| 2388 | + "│ └─TableFullScan 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo", |
| 2389 | + "└─TableReader(Probe) 10000.00 root data:TableFullScan", |
| 2390 | + " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" |
| 2391 | + ], |
| 2392 | + "Result": [ |
| 2393 | + "1 1", |
| 2394 | + "2 <nil>" |
| 2395 | + ] |
| 2396 | + } |
| 2397 | + ] |
2341 | 2398 | }, |
2342 | 2399 | { |
2343 | 2400 | "Name": "TestEliminateMaxOneRow", |
|
2598 | 2655 | }, |
2599 | 2656 | { |
2600 | 2657 | "Name": "TestIssue27233", |
2601 | | - "Cases": null |
| 2658 | + "Cases": [ |
| 2659 | + { |
| 2660 | + "SQL": "SELECT col2 FROM PK_S_MULTI_31 AS T1 WHERE (SELECT count(DISTINCT COL1, COL2) FROM PK_S_MULTI_31 AS T2 WHERE T2.COL1>T1.COL1)>2 order by col2;", |
| 2661 | + "Plan": [ |
| 2662 | + "Sort 0.80 root test.pk_s_multi_31.col2", |
| 2663 | + "└─Projection 0.80 root test.pk_s_multi_31.col2", |
| 2664 | + " └─Selection 0.80 root gt(Column#7, 2)", |
| 2665 | + " └─HashAgg 1.00 root group by:test.pk_s_multi_31.col1, test.pk_s_multi_31.col2, funcs:firstrow(test.pk_s_multi_31.col2)->test.pk_s_multi_31.col2, funcs:count(distinct test.pk_s_multi_31.col1, test.pk_s_multi_31.col2)->Column#7", |
| 2666 | + " └─HashJoin 100000000.00 root CARTESIAN left outer join, other cond:gt(test.pk_s_multi_31.col1, test.pk_s_multi_31.col1)", |
| 2667 | + " ├─IndexReader(Build) 10000.00 root index:IndexFullScan", |
| 2668 | + " │ └─IndexFullScan 10000.00 cop[tikv] table:T2, index:PRIMARY(COL1, COL2) keep order:false, stats:pseudo", |
| 2669 | + " └─IndexReader(Probe) 10000.00 root index:IndexFullScan", |
| 2670 | + " └─IndexFullScan 10000.00 cop[tikv] table:T1, index:PRIMARY(COL1, COL2) keep order:false, stats:pseudo" |
| 2671 | + ], |
| 2672 | + "Result": [ |
| 2673 | + "100" |
| 2674 | + ] |
| 2675 | + } |
| 2676 | + ] |
2602 | 2677 | }, |
2603 | 2678 | { |
2604 | 2679 | "Name": "TestSelectionPartialPushDown", |
2605 | | - "Cases": null |
| 2680 | + "Cases": [ |
| 2681 | + { |
| 2682 | + "SQL": "select * from t1 where a > 1 and b > 1", |
| 2683 | + "Plan": [ |
| 2684 | + "Selection 1111.11 root gt(test.t1.b, 1)", |
| 2685 | + "└─TableReader 3333.33 root data:Selection", |
| 2686 | + " └─Selection 3333.33 cop[tikv] gt(test.t1.a, 1)", |
| 2687 | + " └─TableFullScan 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo" |
| 2688 | + ] |
| 2689 | + }, |
| 2690 | + { |
| 2691 | + "SQL": "select * from t2 use index(idx_a) where a > 1 and b > 1 and c > 1", |
| 2692 | + "Plan": [ |
| 2693 | + "Selection 370.37 root gt(test.t2.b, 1)", |
| 2694 | + "└─IndexLookUp 1111.11 root ", |
| 2695 | + " ├─IndexRangeScan(Build) 3333.33 cop[tikv] table:t2, index:idx_a(a) range:(1,+inf], keep order:false, stats:pseudo", |
| 2696 | + " └─Selection(Probe) 1111.11 cop[tikv] gt(test.t2.c, 1)", |
| 2697 | + " └─TableRowIDScan 3333.33 cop[tikv] table:t2 keep order:false, stats:pseudo" |
| 2698 | + ] |
| 2699 | + } |
| 2700 | + ] |
2606 | 2701 | } |
2607 | 2702 | ] |
0 commit comments