You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2386 lines
130 KiB
2386 lines
130 KiB
[
|
|
{
|
|
"Name": "TestPredicatePushDown",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select a, b from (select a, b from t as t1 order by a) as t2 where t2.b > 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" Sort_3 input:[Group#2], test.t.a:asc",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Projection_2 input:[Group#3], test.t.a, test.t.b",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_8 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Selection_9 input:[Group#5], gt(test.t.b, 10)",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_7 table:t1, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from (select a, b from t as t1 order by a) as t2 where t2.a > 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" Sort_3 input:[Group#2], test.t.a:asc",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Projection_2 input:[Group#3], test.t.a, test.t.b",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_8 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_10 table:t1, pk col:test.t.a, cond:[gt(test.t.a, 10)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from (select a, b, a+b as a_b from t as t1) as t2 where a_b > 10 and b = 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,Column#13]",
|
|
" Projection_2 input:[Group#2], test.t.a, test.t.b, plus(test.t.a, test.t.b)->Column#13",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_7 input:[Group#3], table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" Selection_8 input:[Group#4], eq(test.t.b, 1), gt(plus(test.t.a, test.t.b), 10)",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_6 table:t1, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, @i:=@i+1 as ii from (select b, @i:=0 from t as t1) as t2 where @i < 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,Column#14]",
|
|
" Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#14",
|
|
"Group#1 Schema:[test.t.b,Column#13]",
|
|
" Selection_3 input:[Group#2], lt(getvar(\"i\"), 10)",
|
|
"Group#2 Schema:[test.t.b,Column#13]",
|
|
" Projection_2 input:[Group#3], test.t.b, setvar(i, 0)->Column#13",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" TiKVSingleGather_6 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.b]",
|
|
" TableScan_5 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, @i:=@i+1 as ii from (select a, b, @i:=0 from t as t1) as t2 where @i < 10 and a > 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,Column#14]",
|
|
" Projection_4 input:[Group#1], test.t.b, setvar(i, plus(getvar(i), 1))->Column#14",
|
|
"Group#1 Schema:[test.t.a,test.t.b,Column#13]",
|
|
" Selection_6 input:[Group#2], lt(getvar(\"i\"), 10)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,Column#13]",
|
|
" Projection_2 input:[Group#3], test.t.a, test.t.b, setvar(i, 0)->Column#13",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_8 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_10 table:t1, pk col:test.t.a, cond:[gt(test.t.a, 10)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, max(b) from t group by a having a > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#13]",
|
|
" Projection_3 input:[Group#1], test.t.a, Column#13",
|
|
"Group#1 Schema:[Column#13,test.t.a]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_8 input:[Group#3], table:t",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_10 table:t, pk col:test.t.a, cond:[gt(test.t.a, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, avg(b) from t group by a having a > 1 and max(b) > 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#16]",
|
|
" Projection_5 input:[Group#1], test.t.a, Column#13",
|
|
"Group#1 Schema:[test.t.a,Column#13,Column#14]",
|
|
" Projection_3 input:[Group#2], test.t.a, Column#13, Column#14",
|
|
"Group#2 Schema:[Column#13,Column#14,test.t.a]",
|
|
" Selection_8 input:[Group#3], gt(Column#14, 10)",
|
|
"Group#3 Schema:[Column#13,Column#14,test.t.a]",
|
|
" Aggregation_2 input:[Group#4], group by:test.t.a, funcs:avg(test.t.b), max(test.t.b), firstrow(test.t.a)",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_12 table:t, pk col:test.t.a, cond:[gt(test.t.a, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, approx_count_distinct(b) from t group by a having a > 1 and max(b) > 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#16]",
|
|
" Projection_5 input:[Group#1], test.t.a, Column#13",
|
|
"Group#1 Schema:[test.t.a,Column#13,Column#14]",
|
|
" Projection_3 input:[Group#2], test.t.a, Column#13, Column#14",
|
|
"Group#2 Schema:[Column#13,Column#14,test.t.a]",
|
|
" Selection_8 input:[Group#3], gt(Column#14, 10)",
|
|
"Group#3 Schema:[Column#13,Column#14,test.t.a]",
|
|
" Aggregation_2 input:[Group#4], group by:test.t.a, funcs:approx_count_distinct(test.t.b), max(test.t.b), firstrow(test.t.a)",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_12 table:t, pk col:test.t.a, cond:[gt(test.t.a, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t1.b, t2.b from t t1, t t2 where t1.a = t2.a and t2.b = t1.b and t1.a > 10 and t2.b > 10 and t1.a > t2.b",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.b, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.a,test.t.b]",
|
|
" Join_3 input:[Group#2,Group#3], inner join, equal:[eq(test.t.a, test.t.a) eq(test.t.b, test.t.b)], other cond:gt(test.t.a, test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Selection_12 input:[Group#5], gt(test.t.a, test.t.b), gt(test.t.b, 10)",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_11 table:t1, pk col:test.t.a, cond:[gt(test.t.a, 10)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_14 input:[Group#6], table:t2",
|
|
"Group#6 Schema:[test.t.a,test.t.b]",
|
|
" Selection_17 input:[Group#7], gt(test.t.a, test.t.b), gt(test.t.b, 10)",
|
|
"Group#7 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_16 table:t2, pk col:test.t.a, cond:[gt(test.t.a, 10)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t1.b from t t1, t t2 where t1.a = t2.a and t1.a = 10 and t2.a = 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.a]",
|
|
" TableDual_6 rowcount:0"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, f from t where f > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.f]",
|
|
" Projection_3 input:[Group#1], test.t.a, test.t.f",
|
|
"Group#1 Schema:[test.t.a,test.t.f]",
|
|
" TiKVSingleGather_5 input:[Group#2], table:t",
|
|
" TiKVSingleGather_7 input:[Group#3], table:t, index:f",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t, index:f_g",
|
|
"Group#2 Schema:[test.t.a,test.t.f]",
|
|
" Selection_10 input:[Group#5], gt(test.t.f, 1)",
|
|
"Group#5 Schema:[test.t.a,test.t.f]",
|
|
" TableScan_4 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[test.t.a,test.t.f]",
|
|
" IndexScan_13 table:t, index:f, cond:[gt(test.t.f, 1)]",
|
|
"Group#4 Schema:[test.t.a,test.t.f]",
|
|
" IndexScan_14 table:t, index:f, g, cond:[gt(test.t.f, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, f from (select a, f, g from t where f = 1) t1 where g > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.f]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.f",
|
|
"Group#1 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" Projection_3 input:[Group#2], test.t.a, test.t.f, test.t.g",
|
|
"Group#2 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" TiKVSingleGather_9 input:[Group#3], table:t",
|
|
" TiKVSingleGather_11 input:[Group#4], table:t, index:f_g",
|
|
"Group#3 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" Selection_12 input:[Group#5], eq(test.t.f, 1), gt(test.t.g, 1)",
|
|
"Group#5 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" TableScan_8 table:t, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" IndexScan_14 table:t, index:f, g, cond:[eq(test.t.f, 1) gt(test.t.g, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, f from t where g > 1 and f > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.f]",
|
|
" Projection_3 input:[Group#1], test.t.a, test.t.f",
|
|
"Group#1 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" TiKVSingleGather_5 input:[Group#2], table:t",
|
|
" TiKVSingleGather_7 input:[Group#3], table:t, index:f_g",
|
|
"Group#2 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" Selection_8 input:[Group#4], gt(test.t.f, 1), gt(test.t.g, 1)",
|
|
"Group#4 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" TableScan_4 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" Selection_11 input:[Group#5], gt(test.t.g, 1)",
|
|
"Group#5 Schema:[test.t.a,test.t.f,test.t.g]",
|
|
" IndexScan_10 table:t, index:f, g, cond:[gt(test.t.f, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t1.b from t t1, t t2 where t1.a = t2.a and t1.a = 10 and t2.a = 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.a]",
|
|
" TableDual_6 rowcount:0"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t)) as t1 where a > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25,Column#26]",
|
|
" Projection_9 input:[Group#1], Column#25, Column#26",
|
|
"Group#1 Schema:[Column#25,Column#26]",
|
|
" Union_5 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#25,Column#26]",
|
|
" Projection_6 input:[Group#4], test.t.a, test.t.b",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#5], test.t.a, test.t.b",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_15 input:[Group#6], table:t",
|
|
"Group#6 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_17 table:t, pk col:test.t.a, cond:[gt(test.t.a, 1)]",
|
|
"Group#3 Schema:[Column#25,Column#26]",
|
|
" Projection_7 input:[Group#7], test.t.c, test.t.d",
|
|
"Group#7 Schema:[test.t.c,test.t.d]",
|
|
" Projection_2 input:[Group#8], test.t.c, test.t.d",
|
|
"Group#8 Schema:[test.t.c,test.t.d]",
|
|
" TiKVSingleGather_19 input:[Group#9], table:t",
|
|
" TiKVSingleGather_21 input:[Group#10], table:t, index:c_d_e",
|
|
"Group#9 Schema:[test.t.c,test.t.d]",
|
|
" Selection_22 input:[Group#11], gt(test.t.c, 1)",
|
|
"Group#11 Schema:[test.t.c,test.t.d]",
|
|
" TableScan_18 table:t",
|
|
"Group#10 Schema:[test.t.c,test.t.d]",
|
|
" IndexScan_24 table:t, index:c, d, e, cond:[gt(test.t.c, 1)]"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from (select a, b, min(a) over(partition by b) as min_a from t)as tt where a < 10 and b > 10 and b = min_a",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_7 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,Column#14]",
|
|
" Projection_5 input:[Group#2], test.t.a, test.t.b, Column#14",
|
|
"Group#2 Schema:[test.t.a,test.t.b,Column#14]",
|
|
" Selection_10 input:[Group#3], eq(test.t.b, Column#14), lt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.b,Column#14]",
|
|
" Window_4 input:[Group#4]",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Projection_3 input:[Group#5], test.t.a, test.t.b",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" Projection_2 input:[Group#6], test.t.a, test.t.b",
|
|
"Group#6 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_14 input:[Group#7], table:t",
|
|
"Group#7 Schema:[test.t.a,test.t.b]",
|
|
" Selection_15 input:[Group#8], gt(test.t.b, 10)",
|
|
"Group#8 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_13 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, c from (select b, c from t where b > 1 and c > 1) as t1 where b > 2 and c > 2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,test.t.c]",
|
|
" Projection_5 input:[Group#1], test.t.b, test.t.c",
|
|
"Group#1 Schema:[test.t.b,test.t.c]",
|
|
" Projection_3 input:[Group#2], test.t.b, test.t.c",
|
|
"Group#2 Schema:[test.t.b,test.t.c]",
|
|
" TiKVSingleGather_9 input:[Group#3], table:t",
|
|
"Group#3 Schema:[test.t.b,test.t.c]",
|
|
" Selection_10 input:[Group#4], gt(test.t.b, 1), gt(test.t.b, 2), gt(test.t.c, 1), gt(test.t.c, 2)",
|
|
"Group#4 Schema:[test.t.b,test.t.c]",
|
|
" TableScan_8 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestAggPushDownGather",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b, sum(a) from t group by b",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,Column#13], UniqueKey:[test.t.b]",
|
|
" Projection_3 input:[Group#1], test.t.b, Column#13",
|
|
"Group#1 Schema:[Column#13,test.t.b], UniqueKey:[test.t.b]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.b, funcs:sum(test.t.a), firstrow(test.t.b)",
|
|
" Aggregation_7 input:[Group#3], group by:test.t.b, funcs:sum(Column#14), firstrow(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" TiKVSingleGather_5 input:[Group#4], table:t",
|
|
"Group#4 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" TableScan_4 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#14,test.t.b]",
|
|
" TiKVSingleGather_5 input:[Group#5], table:t",
|
|
"Group#5 Schema:[Column#14,test.t.b]",
|
|
" Aggregation_6 input:[Group#4], group by:test.t.b, funcs:sum(test.t.a)"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, sum(a) from t group by c, b",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,Column#13]",
|
|
" Projection_3 input:[Group#1], test.t.b, Column#13",
|
|
"Group#1 Schema:[Column#13,test.t.b]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.b, test.t.c, funcs:sum(test.t.a), firstrow(test.t.b)",
|
|
" Aggregation_7 input:[Group#3], group by:test.t.b, test.t.c, funcs:sum(Column#14), firstrow(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]",
|
|
" TiKVSingleGather_5 input:[Group#4], table:t",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]",
|
|
" TableScan_4 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#14,test.t.c,test.t.b]",
|
|
" TiKVSingleGather_5 input:[Group#5], table:t",
|
|
"Group#5 Schema:[Column#14,test.t.c,test.t.b]",
|
|
" Aggregation_6 input:[Group#4], group by:test.t.b, test.t.c, funcs:sum(test.t.a)"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, sum(a) from t group by sin(b)+sin(c), b",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b,Column#13]",
|
|
" Projection_3 input:[Group#1], test.t.b, Column#13",
|
|
"Group#1 Schema:[Column#13,test.t.b]",
|
|
" Aggregation_2 input:[Group#2], group by:plus(sin(cast(test.t.b)), sin(cast(test.t.c))), test.t.b, funcs:sum(test.t.a), firstrow(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]",
|
|
" TiKVSingleGather_5 input:[Group#3], table:t",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c], UniqueKey:[test.t.a]",
|
|
" TableScan_4 table:t, pk col:test.t.a"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTopNRules",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b from t order by a limit 2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_5 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b,test.t.a]",
|
|
" Projection_2 input:[Group#2], test.t.b, test.t.a",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" TopN_7 input:[Group#3], test.t.a:asc, offset:0, count:2",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TopN_10 input:[Group#5], test.t.a:asc, offset:0, count:2",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_8 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from t limit 2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Limit_3 input:[Group#2], offset:0, count:2",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" TiKVSingleGather_5 input:[Group#3], table:t",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#4], offset:0, count:2",
|
|
"Group#4 Schema:[test.t.b]",
|
|
" TableScan_4 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a+b from t order by a limit 1 offset 2",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#14]",
|
|
" Projection_5 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13,test.t.a]",
|
|
" Projection_2 input:[Group#2], plus(test.t.a, test.t.b)->Column#13, test.t.a",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" TopN_7 input:[Group#3], test.t.a:asc, offset:2, count:1",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TopN_10 input:[Group#5], test.t.a:asc, offset:0, count:3",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_8 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select c from t order by t.a limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.c]",
|
|
" Projection_5 input:[Group#1], test.t.c",
|
|
"Group#1 Schema:[test.t.c,test.t.a]",
|
|
" Projection_2 input:[Group#2], test.t.c, test.t.a",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" TopN_7 input:[Group#3], test.t.a:asc, offset:0, count:1",
|
|
" TopN_7 input:[Group#4], test.t.a:asc, offset:0, count:1",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" TiKVSingleGather_11 input:[Group#5], table:t, index:c_d_e",
|
|
"Group#5 Schema:[test.t.a,test.t.c]",
|
|
" TopN_13 input:[Group#6], test.t.a:asc, offset:0, count:1",
|
|
"Group#6 Schema:[test.t.a,test.t.c]",
|
|
" IndexScan_10 table:t, index:c, d, e",
|
|
"Group#4 Schema:[test.t.a,test.t.c]",
|
|
" TiKVSingleGather_9 input:[Group#7], table:t",
|
|
"Group#7 Schema:[test.t.a,test.t.c]",
|
|
" TopN_12 input:[Group#8], test.t.a:asc, offset:0, count:1",
|
|
"Group#8 Schema:[test.t.a,test.t.c]",
|
|
" TableScan_8 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select c from t order by t.a + t.b limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.c]",
|
|
" Projection_5 input:[Group#1], test.t.c",
|
|
"Group#1 Schema:[test.t.c,test.t.a,test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.c, test.t.a, test.t.b",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TopN_7 input:[Group#3], plus(test.t.a, test.t.b):asc, offset:0, count:1",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TopN_10 input:[Group#5], plus(test.t.a, test.t.b):asc, offset:0, count:1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TableScan_8 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b, c from t t1 where t1.a in (select t2.a as a from t t2 where t2.b > t1.b order by t1.b limit 1)",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Projection_9 input:[Group#1], test.t.a, test.t.b, test.t.c",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Apply_8 input:[Group#2,Group#3], semi join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TiKVSingleGather_13 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TableScan_12 table:t1, pk col:test.t.a",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" Projection_5 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TopN_11 input:[Group#6], , offset:0, count:1",
|
|
"Group#6 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#7], gt(test.t.b, test.t.b)",
|
|
"Group#7 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_15 input:[Group#8], table:t2",
|
|
"Group#8 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_14 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b, c from t t1 where t1.a in (select a from (select t2.a as a, t1.b as b from t t2 where t2.b > t1.b) x order by b limit 1)",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Projection_11 input:[Group#1], test.t.a, test.t.b, test.t.c",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Apply_10 input:[Group#2,Group#3], semi join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TiKVSingleGather_16 input:[Group#4], table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TableScan_15 table:t1, pk col:test.t.a",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" Projection_9 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#6], test.t.a, Column#25",
|
|
"Group#6 Schema:[test.t.a,Column#25]",
|
|
" Projection_5 input:[Group#7], test.t.a, test.t.b",
|
|
"Group#7 Schema:[test.t.a,test.t.b]",
|
|
" TopN_14 input:[Group#8], test.t.b:asc, offset:0, count:1",
|
|
"Group#8 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#9], gt(test.t.b, test.t.b)",
|
|
"Group#9 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_18 input:[Group#10], table:t2",
|
|
"Group#10 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_17 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from (select @i as a, @i := @i+1 as b from t) t order by a desc limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14]",
|
|
" Projection_3 input:[Group#1], Column#13, Column#14",
|
|
"Group#1 Schema:[Column#13,Column#14]",
|
|
" TopN_7 input:[Group#2], Column#13:desc, offset:0, count:1",
|
|
"Group#2 Schema:[Column#13,Column#14]",
|
|
" Projection_2 input:[Group#3], getvar(i)->Column#13, setvar(i, plus(getvar(i), 1))->Column#14",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" TiKVSingleGather_9 input:[Group#4], table:t",
|
|
" TiKVSingleGather_21 input:[Group#5], table:t, index:e_d_c_str_prefix",
|
|
" TiKVSingleGather_19 input:[Group#6], table:t, index:c_d_e_str",
|
|
" TiKVSingleGather_17 input:[Group#7], table:t, index:f_g",
|
|
" TiKVSingleGather_15 input:[Group#8], table:t, index:g",
|
|
" TiKVSingleGather_13 input:[Group#9], table:t, index:f",
|
|
" TiKVSingleGather_11 input:[Group#10], table:t, index:c_d_e",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" TableScan_8 table:t, pk col:test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:e_str, d_str, c_str",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" IndexScan_18 table:t, index:c_str, d_str, e_str",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" IndexScan_16 table:t, index:f, g",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" IndexScan_14 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" IndexScan_12 table:t, index:f",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" IndexScan_10 table:t, index:c, d, e"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b order by t1.b limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.b:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_9 input:[Group#5], test.t.b:asc, offset:0, count:1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_11 input:[Group#6], table:t1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_12 input:[Group#7], test.t.b:asc, offset:0, count:1",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_10 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_14 input:[Group#8], table:t2",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_13 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b order by t1.a, t1.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_9 input:[Group#5], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_11 input:[Group#6], table:t1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_12 input:[Group#7], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_10 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_14 input:[Group#8], table:t2",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_13 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b order by t2.a, t2.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_12 input:[Group#6], table:t2",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_11 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b order by t1.a, t2.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_12 input:[Group#6], table:t2",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_11 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 right join t t2 on t1.b = t2.b order by t1.a, t1.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_12 input:[Group#6], table:t2",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_11 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 right join t t2 on t1.b = t2.b order by t2.a, t2.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_11 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_10 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_9 input:[Group#6], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_13 input:[Group#7], table:t2",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_14 input:[Group#8], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_12 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 right join t t2 on t1.b = t2.b order by t1.a, t2.c limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_8 input:[Group#2], test.t.a:asc, test.t.c:asc, offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_12 input:[Group#6], table:t2",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_11 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_5 input:[Group#2], offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_6 input:[Group#5], offset:0, count:1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_8 input:[Group#6], table:t1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_9 input:[Group#7], offset:0, count:1",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_7 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_11 input:[Group#8], table:t2",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_10 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 left join t t2 on t1.b = t2.b limit 5 offset 4",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_5 input:[Group#2], offset:4, count:5",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_6 input:[Group#5], offset:0, count:9",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_8 input:[Group#6], table:t1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_9 input:[Group#7], offset:0, count:9",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_7 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_11 input:[Group#8], table:t2",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_10 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 right join t t2 on t1.b = t2.b limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_5 input:[Group#2], offset:0, count:1",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_8 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_7 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_6 input:[Group#6], offset:0, count:1",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#7], table:t2",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_11 input:[Group#8], offset:0, count:1",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t t1 right join t t2 on t1.b = t2.b limit 5 offset 4",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_5 input:[Group#2], offset:4, count:5",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_3 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.b, test.t.b)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_8 input:[Group#5], table:t1",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_7 table:t1, pk col:test.t.a",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_6 input:[Group#6], offset:0, count:9",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#7], table:t2",
|
|
"Group#7 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_11 input:[Group#8], offset:0, count:9",
|
|
"Group#8 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t2, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t) union all (select b from t) order by a limit 2;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25]",
|
|
" TopN_10 input:[Group#1], Column#25:asc, offset:0, count:2",
|
|
"Group#1 Schema:[Column#25]",
|
|
" Union_5 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#25]",
|
|
" Projection_6 input:[Group#4], test.t.a",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_4 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" TopN_13 input:[Group#6], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#7], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#8], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#9], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#10], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#11], test.t.a:asc, offset:0, count:2",
|
|
" TopN_13 input:[Group#12], test.t.a:asc, offset:0, count:2",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TiKVSingleGather_19 input:[Group#13], table:t, index:c_d_e",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" TopN_36 input:[Group#14], test.t.a:asc, offset:0, count:2",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_18 table:t, index:c, d, e",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" TiKVSingleGather_21 input:[Group#15], table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" TopN_35 input:[Group#16], test.t.a:asc, offset:0, count:2",
|
|
"Group#16 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:f",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_23 input:[Group#17], table:t, index:g",
|
|
"Group#17 Schema:[test.t.a]",
|
|
" TopN_34 input:[Group#18], test.t.a:asc, offset:0, count:2",
|
|
"Group#18 Schema:[test.t.a]",
|
|
" IndexScan_22 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TiKVSingleGather_25 input:[Group#19], table:t, index:f_g",
|
|
"Group#19 Schema:[test.t.a]",
|
|
" TopN_33 input:[Group#20], test.t.a:asc, offset:0, count:2",
|
|
"Group#20 Schema:[test.t.a]",
|
|
" IndexScan_24 table:t, index:f, g",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" TiKVSingleGather_27 input:[Group#21], table:t, index:c_d_e_str",
|
|
"Group#21 Schema:[test.t.a]",
|
|
" TopN_32 input:[Group#22], test.t.a:asc, offset:0, count:2",
|
|
"Group#22 Schema:[test.t.a]",
|
|
" IndexScan_26 table:t, index:c_str, d_str, e_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" TiKVSingleGather_29 input:[Group#23], table:t, index:e_d_c_str_prefix",
|
|
"Group#23 Schema:[test.t.a]",
|
|
" TopN_31 input:[Group#24], test.t.a:asc, offset:0, count:2",
|
|
"Group#24 Schema:[test.t.a]",
|
|
" IndexScan_28 table:t, index:e_str, d_str, c_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" TiKVSingleGather_17 input:[Group#25], table:t",
|
|
"Group#25 Schema:[test.t.a]",
|
|
" TopN_30 input:[Group#26], test.t.a:asc, offset:0, count:2",
|
|
"Group#26 Schema:[test.t.a]",
|
|
" TableScan_16 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#25]",
|
|
" Projection_7 input:[Group#27], test.t.b",
|
|
"Group#27 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#28], test.t.b",
|
|
"Group#28 Schema:[test.t.b]",
|
|
" TopN_15 input:[Group#29], test.t.b:asc, offset:0, count:2",
|
|
"Group#29 Schema:[test.t.b]",
|
|
" TiKVSingleGather_38 input:[Group#30], table:t",
|
|
"Group#30 Schema:[test.t.b]",
|
|
" TopN_39 input:[Group#31], test.t.b:asc, offset:0, count:2",
|
|
"Group#31 Schema:[test.t.b]",
|
|
" TableScan_37 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t) union all (select b from t) limit 2;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25]",
|
|
" Limit_8 input:[Group#1], offset:0, count:2",
|
|
"Group#1 Schema:[Column#25]",
|
|
" Union_5 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#25]",
|
|
" Projection_6 input:[Group#4], test.t.a",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_4 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" Limit_9 input:[Group#6], offset:0, count:2",
|
|
" Limit_9 input:[Group#7], offset:0, count:2",
|
|
" Limit_9 input:[Group#8], offset:0, count:2",
|
|
" Limit_9 input:[Group#9], offset:0, count:2",
|
|
" Limit_9 input:[Group#10], offset:0, count:2",
|
|
" Limit_9 input:[Group#11], offset:0, count:2",
|
|
" Limit_9 input:[Group#12], offset:0, count:2",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TiKVSingleGather_13 input:[Group#13], table:t, index:c_d_e",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" Limit_30 input:[Group#14], offset:0, count:2",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_12 table:t, index:c, d, e",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" TiKVSingleGather_15 input:[Group#15], table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" Limit_29 input:[Group#16], offset:0, count:2",
|
|
"Group#16 Schema:[test.t.a]",
|
|
" IndexScan_14 table:t, index:f",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_17 input:[Group#17], table:t, index:g",
|
|
"Group#17 Schema:[test.t.a]",
|
|
" Limit_28 input:[Group#18], offset:0, count:2",
|
|
"Group#18 Schema:[test.t.a]",
|
|
" IndexScan_16 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TiKVSingleGather_19 input:[Group#19], table:t, index:f_g",
|
|
"Group#19 Schema:[test.t.a]",
|
|
" Limit_27 input:[Group#20], offset:0, count:2",
|
|
"Group#20 Schema:[test.t.a]",
|
|
" IndexScan_18 table:t, index:f, g",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" TiKVSingleGather_21 input:[Group#21], table:t, index:c_d_e_str",
|
|
"Group#21 Schema:[test.t.a]",
|
|
" Limit_26 input:[Group#22], offset:0, count:2",
|
|
"Group#22 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:c_str, d_str, e_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" TiKVSingleGather_23 input:[Group#23], table:t, index:e_d_c_str_prefix",
|
|
"Group#23 Schema:[test.t.a]",
|
|
" Limit_25 input:[Group#24], offset:0, count:2",
|
|
"Group#24 Schema:[test.t.a]",
|
|
" IndexScan_22 table:t, index:e_str, d_str, c_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" TiKVSingleGather_11 input:[Group#25], table:t",
|
|
"Group#25 Schema:[test.t.a]",
|
|
" Limit_24 input:[Group#26], offset:0, count:2",
|
|
"Group#26 Schema:[test.t.a]",
|
|
" TableScan_10 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#25]",
|
|
" Projection_7 input:[Group#27], test.t.b",
|
|
"Group#27 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#28], test.t.b",
|
|
"Group#28 Schema:[test.t.b]",
|
|
" Limit_9 input:[Group#29], offset:0, count:2",
|
|
"Group#29 Schema:[test.t.b]",
|
|
" TiKVSingleGather_32 input:[Group#30], table:t",
|
|
"Group#30 Schema:[test.t.b]",
|
|
" Limit_33 input:[Group#31], offset:0, count:2",
|
|
"Group#31 Schema:[test.t.b]",
|
|
" TableScan_31 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t) union all (select b from t) limit 2 offset 5;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25]",
|
|
" Limit_8 input:[Group#1], offset:5, count:2",
|
|
"Group#1 Schema:[Column#25]",
|
|
" Union_5 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#25]",
|
|
" Projection_6 input:[Group#4], test.t.a",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_4 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" Limit_9 input:[Group#6], offset:0, count:7",
|
|
" Limit_9 input:[Group#7], offset:0, count:7",
|
|
" Limit_9 input:[Group#8], offset:0, count:7",
|
|
" Limit_9 input:[Group#9], offset:0, count:7",
|
|
" Limit_9 input:[Group#10], offset:0, count:7",
|
|
" Limit_9 input:[Group#11], offset:0, count:7",
|
|
" Limit_9 input:[Group#12], offset:0, count:7",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TiKVSingleGather_13 input:[Group#13], table:t, index:c_d_e",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" Limit_30 input:[Group#14], offset:0, count:7",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_12 table:t, index:c, d, e",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" TiKVSingleGather_15 input:[Group#15], table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" Limit_29 input:[Group#16], offset:0, count:7",
|
|
"Group#16 Schema:[test.t.a]",
|
|
" IndexScan_14 table:t, index:f",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_17 input:[Group#17], table:t, index:g",
|
|
"Group#17 Schema:[test.t.a]",
|
|
" Limit_28 input:[Group#18], offset:0, count:7",
|
|
"Group#18 Schema:[test.t.a]",
|
|
" IndexScan_16 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TiKVSingleGather_19 input:[Group#19], table:t, index:f_g",
|
|
"Group#19 Schema:[test.t.a]",
|
|
" Limit_27 input:[Group#20], offset:0, count:7",
|
|
"Group#20 Schema:[test.t.a]",
|
|
" IndexScan_18 table:t, index:f, g",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" TiKVSingleGather_21 input:[Group#21], table:t, index:c_d_e_str",
|
|
"Group#21 Schema:[test.t.a]",
|
|
" Limit_26 input:[Group#22], offset:0, count:7",
|
|
"Group#22 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:c_str, d_str, e_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" TiKVSingleGather_23 input:[Group#23], table:t, index:e_d_c_str_prefix",
|
|
"Group#23 Schema:[test.t.a]",
|
|
" Limit_25 input:[Group#24], offset:0, count:7",
|
|
"Group#24 Schema:[test.t.a]",
|
|
" IndexScan_22 table:t, index:e_str, d_str, c_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" TiKVSingleGather_11 input:[Group#25], table:t",
|
|
"Group#25 Schema:[test.t.a]",
|
|
" Limit_24 input:[Group#26], offset:0, count:7",
|
|
"Group#26 Schema:[test.t.a]",
|
|
" TableScan_10 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#25]",
|
|
" Projection_7 input:[Group#27], test.t.b",
|
|
"Group#27 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#28], test.t.b",
|
|
"Group#28 Schema:[test.t.b]",
|
|
" Limit_9 input:[Group#29], offset:0, count:7",
|
|
"Group#29 Schema:[test.t.b]",
|
|
" TiKVSingleGather_32 input:[Group#30], table:t",
|
|
"Group#30 Schema:[test.t.b]",
|
|
" Limit_33 input:[Group#31], offset:0, count:7",
|
|
"Group#31 Schema:[test.t.b]",
|
|
" TableScan_31 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t) union all (select sum(a) from t where a > 2 group by b) order by a limit 2;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#26]",
|
|
" TopN_12 input:[Group#1], Column#26:asc, offset:0, count:2",
|
|
"Group#1 Schema:[Column#26]",
|
|
" Union_7 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#26]",
|
|
" Projection_8 input:[Group#4], cast(test.t.a, decimal(65,0) BINARY)->Column#26",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_6 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" TopN_15 input:[Group#6], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#7], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#8], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#9], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#10], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#11], cast(test.t.a):asc, offset:0, count:2",
|
|
" TopN_15 input:[Group#12], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TiKVSingleGather_21 input:[Group#13], table:t, index:c_d_e",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" TopN_38 input:[Group#14], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:c, d, e",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" TiKVSingleGather_23 input:[Group#15], table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" TopN_37 input:[Group#16], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#16 Schema:[test.t.a]",
|
|
" IndexScan_22 table:t, index:f",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_25 input:[Group#17], table:t, index:g",
|
|
"Group#17 Schema:[test.t.a]",
|
|
" TopN_36 input:[Group#18], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#18 Schema:[test.t.a]",
|
|
" IndexScan_24 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TiKVSingleGather_27 input:[Group#19], table:t, index:f_g",
|
|
"Group#19 Schema:[test.t.a]",
|
|
" TopN_35 input:[Group#20], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#20 Schema:[test.t.a]",
|
|
" IndexScan_26 table:t, index:f, g",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" TiKVSingleGather_29 input:[Group#21], table:t, index:c_d_e_str",
|
|
"Group#21 Schema:[test.t.a]",
|
|
" TopN_34 input:[Group#22], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#22 Schema:[test.t.a]",
|
|
" IndexScan_28 table:t, index:c_str, d_str, e_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" TiKVSingleGather_31 input:[Group#23], table:t, index:e_d_c_str_prefix",
|
|
"Group#23 Schema:[test.t.a]",
|
|
" TopN_33 input:[Group#24], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#24 Schema:[test.t.a]",
|
|
" IndexScan_30 table:t, index:e_str, d_str, c_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" TiKVSingleGather_19 input:[Group#25], table:t",
|
|
"Group#25 Schema:[test.t.a]",
|
|
" TopN_32 input:[Group#26], cast(test.t.a):asc, offset:0, count:2",
|
|
"Group#26 Schema:[test.t.a]",
|
|
" TableScan_18 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#26]",
|
|
" Projection_9 input:[Group#27], cast(Column#13, decimal(65,0) BINARY)->Column#26",
|
|
"Group#27 Schema:[Column#13]",
|
|
" Projection_4 input:[Group#28], Column#13",
|
|
"Group#28 Schema:[Column#13]",
|
|
" TopN_17 input:[Group#29], cast(Column#13):asc, offset:0, count:2",
|
|
"Group#29 Schema:[Column#13]",
|
|
" Aggregation_3 input:[Group#30], group by:test.t.b, funcs:sum(test.t.a)",
|
|
"Group#30 Schema:[test.t.a,test.t.b]",
|
|
" Selection_2 input:[Group#31], gt(test.t.a, 2)",
|
|
"Group#31 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_40 input:[Group#32], table:t",
|
|
"Group#32 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_39 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t) union all (select sum(a) from t where a > 2 group by b) order by a limit 1, 2;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#26]",
|
|
" TopN_12 input:[Group#1], Column#26:asc, offset:1, count:2",
|
|
"Group#1 Schema:[Column#26]",
|
|
" Union_7 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#26]",
|
|
" Projection_8 input:[Group#4], cast(test.t.a, decimal(65,0) BINARY)->Column#26",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_6 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" TopN_15 input:[Group#6], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#7], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#8], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#9], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#10], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#11], cast(test.t.a):asc, offset:0, count:3",
|
|
" TopN_15 input:[Group#12], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TiKVSingleGather_21 input:[Group#13], table:t, index:c_d_e",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" TopN_38 input:[Group#14], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_20 table:t, index:c, d, e",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" TiKVSingleGather_23 input:[Group#15], table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" TopN_37 input:[Group#16], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#16 Schema:[test.t.a]",
|
|
" IndexScan_22 table:t, index:f",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_25 input:[Group#17], table:t, index:g",
|
|
"Group#17 Schema:[test.t.a]",
|
|
" TopN_36 input:[Group#18], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#18 Schema:[test.t.a]",
|
|
" IndexScan_24 table:t, index:g",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TiKVSingleGather_27 input:[Group#19], table:t, index:f_g",
|
|
"Group#19 Schema:[test.t.a]",
|
|
" TopN_35 input:[Group#20], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#20 Schema:[test.t.a]",
|
|
" IndexScan_26 table:t, index:f, g",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" TiKVSingleGather_29 input:[Group#21], table:t, index:c_d_e_str",
|
|
"Group#21 Schema:[test.t.a]",
|
|
" TopN_34 input:[Group#22], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#22 Schema:[test.t.a]",
|
|
" IndexScan_28 table:t, index:c_str, d_str, e_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" TiKVSingleGather_31 input:[Group#23], table:t, index:e_d_c_str_prefix",
|
|
"Group#23 Schema:[test.t.a]",
|
|
" TopN_33 input:[Group#24], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#24 Schema:[test.t.a]",
|
|
" IndexScan_30 table:t, index:e_str, d_str, c_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" TiKVSingleGather_19 input:[Group#25], table:t",
|
|
"Group#25 Schema:[test.t.a]",
|
|
" TopN_32 input:[Group#26], cast(test.t.a):asc, offset:0, count:3",
|
|
"Group#26 Schema:[test.t.a]",
|
|
" TableScan_18 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#26]",
|
|
" Projection_9 input:[Group#27], cast(Column#13, decimal(65,0) BINARY)->Column#26",
|
|
"Group#27 Schema:[Column#13]",
|
|
" Projection_4 input:[Group#28], Column#13",
|
|
"Group#28 Schema:[Column#13]",
|
|
" TopN_17 input:[Group#29], cast(Column#13):asc, offset:0, count:3",
|
|
"Group#29 Schema:[Column#13]",
|
|
" Aggregation_3 input:[Group#30], group by:test.t.b, funcs:sum(test.t.a)",
|
|
"Group#30 Schema:[test.t.a,test.t.b]",
|
|
" Selection_2 input:[Group#31], gt(test.t.a, 2)",
|
|
"Group#31 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_40 input:[Group#32], table:t",
|
|
"Group#32 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_39 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "(select a from t where a = 1) union all (select b from t where a = 2) union all (select c from t where a = 3) order by a limit 2;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#37]",
|
|
" TopN_16 input:[Group#1], Column#37:asc, offset:0, count:2",
|
|
"Group#1 Schema:[Column#37]",
|
|
" Union_10 input:[Group#2,Group#3,Group#4]",
|
|
"Group#2 Schema:[Column#37]",
|
|
" Projection_11 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" Projection_9 input:[Group#6], test.t.a",
|
|
"Group#6 Schema:[test.t.a]",
|
|
" TopN_19 input:[Group#7], test.t.a:asc, offset:0, count:2",
|
|
"Group#7 Schema:[test.t.a]",
|
|
" Selection_8 input:[Group#8], eq(test.t.a, 1)",
|
|
"Group#8 Schema:[test.t.a]",
|
|
" TiKVSingleGather_25 input:[Group#9], table:t",
|
|
" TiKVSingleGather_37 input:[Group#10], table:t, index:e_d_c_str_prefix",
|
|
" TiKVSingleGather_35 input:[Group#11], table:t, index:c_d_e_str",
|
|
" TiKVSingleGather_33 input:[Group#12], table:t, index:f_g",
|
|
" TiKVSingleGather_31 input:[Group#13], table:t, index:g",
|
|
" TiKVSingleGather_29 input:[Group#14], table:t, index:f",
|
|
" TiKVSingleGather_27 input:[Group#15], table:t, index:c_d_e",
|
|
"Group#9 Schema:[test.t.a]",
|
|
" TableScan_24 table:t, pk col:test.t.a",
|
|
"Group#10 Schema:[test.t.a]",
|
|
" IndexScan_36 table:t, index:e_str, d_str, c_str",
|
|
"Group#11 Schema:[test.t.a]",
|
|
" IndexScan_34 table:t, index:c_str, d_str, e_str",
|
|
"Group#12 Schema:[test.t.a]",
|
|
" IndexScan_32 table:t, index:f, g",
|
|
"Group#13 Schema:[test.t.a]",
|
|
" IndexScan_30 table:t, index:g",
|
|
"Group#14 Schema:[test.t.a]",
|
|
" IndexScan_28 table:t, index:f",
|
|
"Group#15 Schema:[test.t.a]",
|
|
" IndexScan_26 table:t, index:c, d, e",
|
|
"Group#3 Schema:[Column#37]",
|
|
" Projection_12 input:[Group#16], test.t.b",
|
|
"Group#16 Schema:[test.t.b]",
|
|
" Projection_6 input:[Group#17], test.t.b",
|
|
"Group#17 Schema:[test.t.a,test.t.b]",
|
|
" TopN_21 input:[Group#18], test.t.b:asc, offset:0, count:2",
|
|
"Group#18 Schema:[test.t.a,test.t.b]",
|
|
" Selection_5 input:[Group#19], eq(test.t.a, 2)",
|
|
"Group#19 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_39 input:[Group#20], table:t",
|
|
"Group#20 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_38 table:t, pk col:test.t.a",
|
|
"Group#4 Schema:[Column#37]",
|
|
" Projection_13 input:[Group#21], test.t.c",
|
|
"Group#21 Schema:[test.t.c]",
|
|
" Projection_3 input:[Group#22], test.t.c",
|
|
"Group#22 Schema:[test.t.a,test.t.c]",
|
|
" TopN_23 input:[Group#23], test.t.c:asc, offset:0, count:2",
|
|
"Group#23 Schema:[test.t.a,test.t.c]",
|
|
" Selection_2 input:[Group#24], eq(test.t.a, 3)",
|
|
"Group#24 Schema:[test.t.a,test.t.c]",
|
|
" TiKVSingleGather_41 input:[Group#25], table:t",
|
|
" TiKVSingleGather_43 input:[Group#26], table:t, index:c_d_e",
|
|
"Group#25 Schema:[test.t.a,test.t.c]",
|
|
" TableScan_40 table:t, pk col:test.t.a",
|
|
"Group#26 Schema:[test.t.a,test.t.c]",
|
|
" IndexScan_42 table:t, index:c, d, e"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestProjectionElimination",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select a, b from (select a, b from t) as t2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a+b from (select a, b from t) as t2",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], plus(test.t.a, test.t.b)->Column#13",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select floor(a) as a from t) as t2",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_2 input:[Group#1], floor(test.t.a)->Column#13",
|
|
"Group#1 Schema:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a, b from (select a, b, c from t) as t2) as t3",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a+c from (select floor(a) as a, b, c from t) as t2",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#14]",
|
|
" Projection_4 input:[Group#1], plus(floor(test.t.a), test.t.c)->Column#14",
|
|
"Group#1 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestEliminateMaxMin",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select max(a) from t;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:max(test.t.a)",
|
|
" Aggregation_2 input:[Group#3], funcs:max(test.t.a)",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" DataSource_1 table:t",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" TopN_4 input:[Group#2], test.t.a:desc, offset:0, count:1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select min(a) from t;",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:min(test.t.a)",
|
|
" Aggregation_2 input:[Group#3], funcs:min(test.t.a)",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" DataSource_1 table:t",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" TopN_4 input:[Group#2], test.t.a:asc, offset:0, count:1"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestMergeAggregationProjection",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b, max(a) from (select a, c+d as b from t as t1) as t2 group by b",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14]",
|
|
" Projection_4 input:[Group#1], Column#13, Column#14",
|
|
"Group#1 Schema:[Column#14,Column#13]",
|
|
" Aggregation_3 input:[Group#2], group by:Column#13, funcs:max(test.t.a), firstrow(Column#13)",
|
|
" Aggregation_5 input:[Group#3], group by:plus(test.t.c, test.t.d), funcs:max(test.t.a), firstrow(plus(test.t.c, test.t.d))",
|
|
"Group#2 Schema:[test.t.a,Column#13]",
|
|
" Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#13",
|
|
"Group#3 Schema:[test.t.a,test.t.c,test.t.d]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select max(a) from (select c+d as b, a+c as a from t as t1) as t2",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#15]",
|
|
" Projection_4 input:[Group#1], Column#15",
|
|
"Group#1 Schema:[Column#15]",
|
|
" Aggregation_3 input:[Group#2], funcs:max(Column#14)",
|
|
" Aggregation_5 input:[Group#3], funcs:max(plus(test.t.a, test.t.c))",
|
|
"Group#2 Schema:[Column#14]",
|
|
" Projection_2 input:[Group#3], plus(test.t.a, test.t.c)->Column#14",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b, max(a) from (select a, c+d as b, @i:=0 from t as t1) as t2 group by b",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#15]",
|
|
" Projection_4 input:[Group#1], Column#13, Column#15",
|
|
"Group#1 Schema:[Column#15,Column#13]",
|
|
" Aggregation_3 input:[Group#2], group by:Column#13, funcs:max(test.t.a), firstrow(Column#13)",
|
|
"Group#2 Schema:[test.t.a,Column#13,Column#14]",
|
|
" Projection_2 input:[Group#3], test.t.a, plus(test.t.c, test.t.d)->Column#13, setvar(i, 0)->Column#14",
|
|
"Group#3 Schema:[test.t.a,test.t.c,test.t.d]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestMergeAdjacentLimit",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b from (select b from t limit 5) as t1 limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:0, count:5",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t limit 20) as t1 limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:0, count:10",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t limit 10) as t1 limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:0, count:10",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t limit 10 offset 10) as t1 limit 10 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:15, count:5",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t limit 10 offset 2) as t1 limit 3 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:7, count:3",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t limit 10 offset 5) as t1 limit 5 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" Projection_2 input:[Group#2], test.t.b",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" Limit_6 input:[Group#3], offset:10, count:5",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a from t limit 3 offset 5) t1 limit 3 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_4 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a]",
|
|
" Projection_2 input:[Group#2], test.t.a",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" TableDual_6 rowcount:0"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestMergeAdjacentTopN",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b from (select b from t where c > 1 order by b limit 3) as t1 order by b limit 2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_11 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b,test.t.c]",
|
|
" TopN_14 input:[Group#2], test.t.b:asc, offset:0, count:2",
|
|
"Group#2 Schema:[test.t.b,test.t.c]",
|
|
" Selection_2 input:[Group#3], gt(test.t.c, 1)",
|
|
"Group#3 Schema:[test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a from t where b > 2 order by a limit 3 offset 1) as t1 order by a limit 2 offset 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_11 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" TopN_14 input:[Group#2], test.t.a:asc, offset:2, count:2",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_2 input:[Group#3], gt(test.t.b, 2)",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from (select * from t order by a limit 3) as t1 order by a limit 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_10 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TopN_13 input:[Group#2], test.t.a:asc, offset:0, count:3",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 5) as t1 order by b limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:0, count:5",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 20) as t1 order by b limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:0, count:10",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 10) as t1 order by b limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:0, count:10",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 10 offset 10) as t1 order by b limit 10 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:15, count:5",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 10 offset 2) as t1 order by b limit 3 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:7, count:3",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t order by b limit 10 offset 5) as t1 order by b limit 5 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_10 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.b]",
|
|
" TopN_13 input:[Group#2], test.t.b:asc, offset:10, count:5",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a from t order by a limit 3 offset 5) as t1 order by a limit 3 offset 5",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_10 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a]",
|
|
" TableDual_13 rowcount:0"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select b from (select b from t where c > 1 order by b, a limit 3) as t1 order by b limit 2",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.b]",
|
|
" Projection_13 input:[Group#1], test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" TopN_16 input:[Group#2], test.t.b:asc, test.t.a:asc, offset:0, count:2",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Selection_2 input:[Group#3], gt(test.t.c, 1)",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a from t where b > 2 order by a, b limit 3 offset 1) as t1 order by a limit 2 offset 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_13 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" TopN_16 input:[Group#2], test.t.a:asc, test.t.b:asc, offset:2, count:2",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_2 input:[Group#3], gt(test.t.b, 2)",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTransformLimitToTableDual",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select a from t limit 0 offset 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" TableDual_4 rowcount:0"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t as t1 left join (select * from t limit 0 offset 1) as t2 on t1.a = t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Projection_6 input:[Group#1], test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date, test.t.a, test.t.b, test.t.c, test.t.d, test.t.e, test.t.c_str, test.t.d_str, test.t.e_str, test.t.f, test.t.g, test.t.h, test.t.i_date",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_5 input:[Group#2,Group#3], left outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableDual_7 rowcount:0"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t limit 0 offset 5)) as t1 where a > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25,Column#26]",
|
|
" Projection_10 input:[Group#1], Column#25, Column#26",
|
|
"Group#1 Schema:[Column#25,Column#26]",
|
|
" Selection_9 input:[Group#2], gt(Column#25, 1)",
|
|
"Group#2 Schema:[Column#25,Column#26]",
|
|
" Union_6 input:[Group#3,Group#4]",
|
|
"Group#3 Schema:[Column#25,Column#26]",
|
|
" Projection_7 input:[Group#5], test.t.a, test.t.b",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" Projection_5 input:[Group#6], test.t.a, test.t.b",
|
|
"Group#6 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_4 table:t",
|
|
"Group#4 Schema:[Column#25,Column#26]",
|
|
" Projection_8 input:[Group#7], test.t.c, test.t.d",
|
|
"Group#7 Schema:[test.t.c,test.t.d]",
|
|
" TableDual_11 rowcount:0"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestPostTransformationRules",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select b from (select b+10 as b from t) as t1 order by b + 10 limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_8 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13,Column#14]",
|
|
" TopN_10 input:[Group#2], Column#14:asc, offset:0, count:10",
|
|
"Group#2 Schema:[Column#13,Column#14]",
|
|
" Projection_11 input:[Group#3], plus(test.t.b, 10)->Column#13, plus(plus(test.t.b, 10), 10)->Column#14",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from (select a+1 as c, a+b as d from t) as t1 order by c+d limit 10",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14]",
|
|
" Projection_8 input:[Group#1], Column#13, Column#14",
|
|
"Group#1 Schema:[Column#13,Column#14,Column#15]",
|
|
" TopN_10 input:[Group#2], Column#15:asc, offset:0, count:10",
|
|
"Group#2 Schema:[Column#13,Column#14,Column#15]",
|
|
" Projection_11 input:[Group#3], plus(test.t.a, 1)->Column#13, plus(test.t.a, test.t.b)->Column#14, plus(plus(test.t.a, 1), plus(test.t.a, test.t.b))->Column#15",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from (select a, b from t order by b limit 10) as t1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_5 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" TopN_6 input:[Group#2], test.t.b:asc, offset:0, count:10",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestPushLimitDownTiKVSingleGather",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select * from t limit 1",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_3 input:[Group#1], offset:0, count:1",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_5 input:[Group#2], table:t",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_6 input:[Group#3], offset:0, count:1",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_4 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select * from t as t1 left join (select * from t limit 2) as t2 on t1.a = t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date,test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Join_5 input:[Group#1,Group#2], left outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_8 input:[Group#3], table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_7 table:t1, pk col:test.t.a",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_4 input:[Group#4], offset:0, count:2",
|
|
"Group#4 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TiKVSingleGather_10 input:[Group#5], table:t",
|
|
"Group#5 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" Limit_11 input:[Group#6], offset:0, count:2",
|
|
"Group#6 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.e,test.t.c_str,test.t.d_str,test.t.e_str,test.t.f,test.t.g,test.t.h,test.t.i_date]",
|
|
" TableScan_9 table:t, pk col:test.t.a"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a, b from ((select a, b from t) union all(select c as a, d as b from t limit 3)) as t1 where a > 1",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#25,Column#26]",
|
|
" Selection_9 input:[Group#1], gt(Column#25, 1)",
|
|
"Group#1 Schema:[Column#25,Column#26]",
|
|
" Union_6 input:[Group#2,Group#3]",
|
|
"Group#2 Schema:[Column#25,Column#26]",
|
|
" Projection_7 input:[Group#4], test.t.a, test.t.b",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" TiKVSingleGather_12 input:[Group#5], table:t",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" TableScan_11 table:t, pk col:test.t.a",
|
|
"Group#3 Schema:[Column#25,Column#26]",
|
|
" Projection_8 input:[Group#6], test.t.c, test.t.d",
|
|
"Group#6 Schema:[test.t.c,test.t.d]",
|
|
" Limit_3 input:[Group#7], offset:0, count:3",
|
|
" Limit_3 input:[Group#8], offset:0, count:3",
|
|
"Group#7 Schema:[test.t.c,test.t.d]",
|
|
" TiKVSingleGather_16 input:[Group#9], table:t, index:c_d_e",
|
|
"Group#9 Schema:[test.t.c,test.t.d]",
|
|
" Limit_18 input:[Group#10], offset:0, count:3",
|
|
"Group#10 Schema:[test.t.c,test.t.d]",
|
|
" IndexScan_15 table:t, index:c, d, e",
|
|
"Group#8 Schema:[test.t.c,test.t.d]",
|
|
" TiKVSingleGather_14 input:[Group#11], table:t",
|
|
"Group#11 Schema:[test.t.c,test.t.d]",
|
|
" Limit_17 input:[Group#12], offset:0, count:3",
|
|
"Group#12 Schema:[test.t.c,test.t.d]",
|
|
" TableScan_13 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestEliminateOuterJoin",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a and t1.b = 3 group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, sum(t1.h) from t as t1 left join (select * from t) as t2 on t1.h = t2.h group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(test.t.h), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.h]",
|
|
" Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.h, test.t.h)]",
|
|
"Group#3 Schema:[test.t.a,test.t.h]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.h]",
|
|
" Projection_3 input:[Group#5], test.t.h",
|
|
"Group#5 Schema:[test.t.h]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, sum(distinct t1.h) from t as t1 left join (select * from t) as t2 on t1.h = t2.h group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(distinct test.t.h), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.h]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, max(t1.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.a]",
|
|
" Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_3 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, max(t2.b) from t as t1 left join (select * from t) as t2 on t1.a = t2.a group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Join_4 input:[Group#3,Group#4], left outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Projection_3 input:[Group#5], test.t.a, test.t.b",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Projection_3 input:[Group#3], test.t.a, test.t.b",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a and t2.c = 3 group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" Projection_3 input:[Group#3], test.t.a, test.t.b, test.t.c",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, sum(t2.h) from t as t1 right join (select * from t) as t2 on t1.h = t2.h group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(test.t.h), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.h]",
|
|
" Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.h, test.t.h)]",
|
|
"Group#3 Schema:[test.t.h]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.h]",
|
|
" Projection_3 input:[Group#5], test.t.a, test.t.h",
|
|
"Group#5 Schema:[test.t.a,test.t.h]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, sum(distinct t2.h) from t as t1 right join (select * from t) as t2 on t1.h = t2.h group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:sum(distinct test.t.h), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.h]",
|
|
" Projection_3 input:[Group#3], test.t.a, test.t.h",
|
|
"Group#3 Schema:[test.t.a,test.t.h]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, max(t2.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t1.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.a,test.t.b]",
|
|
" Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#3 Schema:[test.t.a]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" Projection_3 input:[Group#5], test.t.a, test.t.b",
|
|
"Group#5 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, max(t1.b) from t as t1 right join (select * from t) as t2 on t1.a = t2.a group by t2.a;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.b,test.t.a]",
|
|
" Join_4 input:[Group#3,Group#4], right outer join, equal:[eq(test.t.a, test.t.a)]",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1",
|
|
"Group#4 Schema:[test.t.a]",
|
|
" Projection_3 input:[Group#5], test.t.a",
|
|
"Group#5 Schema:[test.t.a]",
|
|
" DataSource_2 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t1.b from t as t1 left join t as t2 on t1.a = t2.a and t1.b = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t1.b from t as t1 left join t as t2 on t1.b = t2.b and t1.a = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" Join_3 input:[Group#2,Group#3], left outer join, equal:[eq(test.t.b, test.t.b)], left cond:eq(test.t.a, 3), right cond:eq(test.t.b, 3)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" DataSource_2 table:t2"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, t1.b from t as t1 left join t as t2 on t1.a = t2.a and t1.a = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.b,test.t.a]",
|
|
" Join_3 input:[Group#2,Group#3], left outer join, equal:[eq(test.t.a, test.t.a)], left cond:eq(test.t.a, 3), right cond:eq(test.t.b, 3)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t2"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, t2.b from t as t1 right join t as t2 on t1.a = t2.a and t1.b = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t2"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t2.a, t2.b from t as t1 right join t as t2 on t1.b = t2.b and t1.a = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" Join_3 input:[Group#2,Group#3], right outer join, equal:[eq(test.t.b, test.t.b)], left cond:eq(test.t.a, 3), right cond:eq(test.t.b, 3)",
|
|
"Group#2 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t2"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t1.a, t2.b from t as t1 right join t as t2 on t1.a = t2.a and t1.a = 3 and t2.b = 3;",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#1], test.t.a, test.t.b",
|
|
"Group#1 Schema:[test.t.a,test.t.b]",
|
|
" Join_3 input:[Group#2,Group#3], right outer join, equal:[eq(test.t.a, test.t.a)], left cond:eq(test.t.a, 3), right cond:eq(test.t.b, 3)",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_2 table:t2"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select t3.a, max(t3.b) from (select t1.a, t1.b from t as t1 left join t as t2 on t1.a = t2.a) t3 group by t3.a",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a,Column#25]",
|
|
" Projection_6 input:[Group#1], test.t.a, Column#25",
|
|
"Group#1 Schema:[Column#25,test.t.a]",
|
|
" Aggregation_5 input:[Group#2], group by:test.t.a, funcs:max(test.t.b), firstrow(test.t.a)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Projection_4 input:[Group#3], test.t.a, test.t.b",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t1"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTransformAggregateCaseToSelection",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t group by c",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.c, funcs:count(case(gt(test.t.a, 10), test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t group by 'a'",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:1, funcs:count(case(gt(test.t.a, 10), test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t group by concat(c, a)",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:concat(cast(test.t.c), cast(test.t.a)), funcs:count(case(gt(test.t.a, 10), test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t group by concat(c, 'a')",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:concat(cast(test.t.c), \"a\"), funcs:count(case(gt(test.t.a, 10), test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b end) from t group by concat('a', 'c')",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:1, funcs:count(case(gt(test.t.a, 10), test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then b else null end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then null else b end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#3], not(gt(test.t.a, 10))",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then c else b end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c, test.t.b))",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then c else 0 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c, 0))",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 10 then c else 0 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:sum(test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 10 then c else 0.0 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:sum(cast(test.t.c))",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 10 then c else 1-1 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:sum(test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10)",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 0 then (case when a <= 1000 then b end) else 0 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_7 input:[Group#2], funcs:sum(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b]",
|
|
" Selection_6 input:[Group#3], le(test.t.a, 1000)",
|
|
"Group#3 Schema:[test.t.a,test.t.b]",
|
|
" Selection_4 input:[Group#4], gt(test.t.a, 0)",
|
|
"Group#4 Schema:[test.t.a,test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 10 then 0 else c end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:sum(test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], not(gt(test.t.a, 10))",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(case when a > 10 then 2 else 1 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:sum(case(gt(test.t.a, 10), 2, 1))",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(DISTINCT case when a > 10 then null else c end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(distinct test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], not(gt(test.t.a, 10))",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select approx_count_distinct(case when a > 10 then null else c end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:approx_count_distinct(test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" Selection_4 input:[Group#3], not(gt(test.t.a, 10))",
|
|
"Group#3 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select sum(DISTINCT case when a > 10 then c else 0 end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:sum(distinct case(gt(test.t.a, 10), test.t.c, 0))",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select case when c > 10 then c end from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_2 input:[Group#1], case(gt(test.t.c, 10), test.t.c)->Column#13",
|
|
"Group#1 Schema:[test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 then c end), c from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,test.t.c]",
|
|
" Projection_3 input:[Group#1], Column#13, test.t.c",
|
|
"Group#1 Schema:[Column#13,test.t.c]",
|
|
" Aggregation_2 input:[Group#2], funcs:count(case(gt(test.t.a, 10), test.t.c)), firstrow(test.t.c)",
|
|
"Group#2 Schema:[test.t.a,test.t.c]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 and d < 5 then b end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.d]",
|
|
" Selection_4 input:[Group#3], gt(test.t.a, 10), lt(test.t.d, 5)",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.d]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(case when a > 10 and d < 5 then null else b end) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_5 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.d]",
|
|
" Selection_4 input:[Group#3], not(and(gt(test.t.a, 10), lt(test.t.d, 5)))",
|
|
"Group#3 Schema:[test.t.a,test.t.b,test.t.d]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestTransformAggToProj",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select count(b) from t group by a",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_5 input:[Group#1], 1->Column#13",
|
|
"Group#1 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b) from t group by b",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.b, funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b) from t",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13]",
|
|
" Projection_3 input:[Group#1], Column#13",
|
|
"Group#1 Schema:[Column#13]",
|
|
" Aggregation_2 input:[Group#2], funcs:count(test.t.b)",
|
|
"Group#2 Schema:[test.t.b]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select a from t group by a having sum(b) > 4",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_5 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a,Column#13]",
|
|
" Selection_4 input:[Group#2], gt(Column#13, 4)",
|
|
"Group#2 Schema:[test.t.a,Column#13]",
|
|
" Projection_7 input:[Group#3], test.t.a, cast(test.t.b, decimal(65,0) BINARY)->Column#13",
|
|
"Group#3 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b), sum(b), avg(b), b, max(b), min(b), bit_and(b), bit_or(b), bit_xor(b) from t group by a having sum(b) >= 0 and count(b) >= 0 order by b",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#21,Column#22,Column#23,test.t.b,Column#25,Column#26,Column#27,Column#28,Column#29]",
|
|
" Projection_6 input:[Group#1], Column#13, Column#14, Column#15, test.t.b, Column#16, Column#17, Column#18, Column#19, Column#20",
|
|
"Group#1 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]",
|
|
" Sort_5 input:[Group#2], test.t.b:asc",
|
|
"Group#2 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]",
|
|
" Selection_4 input:[Group#3], ge(Column#13, 0), ge(Column#14, 0)",
|
|
"Group#3 Schema:[Column#13,Column#14,Column#15,test.t.b,Column#16,Column#17,Column#18,Column#19,Column#20,Column#14,Column#13]",
|
|
" Projection_8 input:[Group#4], 1->Column#13, cast(test.t.b, decimal(65,0) BINARY)->Column#14, cast(test.t.b, decimal(65,30) BINARY)->Column#15, test.t.b, cast(test.t.b, int(11))->Column#16, cast(test.t.b, int(11))->Column#17, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#18, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#19, ifnull(cast(test.t.b, bigint(21) UNSIGNED BINARY), 0)->Column#20, cast(test.t.b, decimal(65,0) BINARY)->Column#14, 1->Column#13",
|
|
"Group#4 Schema:[test.t.a,test.t.b], UniqueKey:[test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g) from t group by a",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20]",
|
|
" Projection_5 input:[Group#1], 1->Column#13, cast(test.t.b, decimal(65,0) BINARY)->Column#14, cast(test.t.b, decimal(65,30) BINARY)->Column#15, test.t.f, cast(test.t.c, int(11))->Column#16, cast(test.t.c, int(11))->Column#17, ifnull(cast(test.t.c, bigint(21) UNSIGNED BINARY), 18446744073709551615)->Column#18, ifnull(cast(test.t.d, bigint(21) UNSIGNED BINARY), 0)->Column#19, ifnull(cast(test.t.g, bigint(21) UNSIGNED BINARY), 0)->Column#20",
|
|
"Group#1 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g], UniqueKey:[test.t.f,test.t.f,test.t.g,test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g), var_pop(b) from t group by a",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21]",
|
|
" Projection_3 input:[Group#1], Column#13, Column#14, Column#15, test.t.f, Column#16, Column#17, Column#18, Column#19, Column#20, Column#21",
|
|
"Group#1 Schema:[Column#13,Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,test.t.f]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.a, funcs:count(test.t.b), sum(test.t.b), avg(test.t.b), max(test.t.c), min(test.t.c), bit_and(test.t.c), bit_or(test.t.d), bit_xor(test.t.g), var_pop(test.t.b), firstrow(test.t.f)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g], UniqueKey:[test.t.f,test.t.f,test.t.g,test.t.a]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
},
|
|
{
|
|
"SQL": "select count(b), sum(b), avg(b), f, max(c), min(c), bit_and(c), bit_or(d), bit_xor(g), group_concat(b, c, d, f) from t group by a",
|
|
"Result": [
|
|
"Group#0 Schema:[Column#13,Column#14,Column#15,test.t.f,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21]",
|
|
" Projection_3 input:[Group#1], Column#13, Column#14, Column#15, test.t.f, Column#16, Column#17, Column#18, Column#19, Column#20, Column#21",
|
|
"Group#1 Schema:[Column#13,Column#14,Column#15,Column#16,Column#17,Column#18,Column#19,Column#20,Column#21,test.t.f]",
|
|
" Aggregation_2 input:[Group#2], group by:test.t.a, funcs:count(test.t.b), sum(test.t.b), avg(test.t.b), max(test.t.c), min(test.t.c), bit_and(test.t.c), bit_or(test.t.d), bit_xor(test.t.g), group_concat(test.t.b, test.t.c, test.t.d, test.t.f separator \",\"), firstrow(test.t.f)",
|
|
"Group#2 Schema:[test.t.a,test.t.b,test.t.c,test.t.d,test.t.f,test.t.g]",
|
|
" DataSource_1 table:t"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"Name": "TestDecorrelate",
|
|
"Cases": [
|
|
{
|
|
"SQL": "select a from t t1 where exists (select 1 from t t2 where t1.a = t2.b)",
|
|
"Result": [
|
|
"Group#0 Schema:[test.t.a]",
|
|
" Projection_7 input:[Group#1], test.t.a",
|
|
"Group#1 Schema:[test.t.a]",
|
|
" Apply_6 input:[Group#2,Group#3], semi join",
|
|
" Join_10 input:[Group#2,Group#4], semi join, equal:[eq(test.t.a, test.t.b)]",
|
|
"Group#2 Schema:[test.t.a]",
|
|
" DataSource_1 table:t1",
|
|
"Group#3 Schema:[test.t.b]",
|
|
" Selection_4 input:[Group#4], eq(test.t.a, test.t.b)",
|
|
"Group#4 Schema:[test.t.b]",
|
|
" DataSource_3 table:t2"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|