Files
tidb/executor/testdata/executor_suite_out.json

453 lines
22 KiB
JSON

[
{
"Name": "TestSetOperation",
"Cases": [
{
"SQL": "select * from t3 union select * from t1",
"Plan": [
"HashAgg_11 16000.00 root group by:Column#5, funcs:firstrow(Column#5)->Column#5",
"└─Union_12 20000.00 root ",
" ├─TableReader_15 10000.00 root data:TableFullScan_14",
" │ └─TableFullScan_14 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
" └─TableReader_18 10000.00 root data:TableFullScan_17",
" └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"2",
"3",
"<nil>"
]
},
{
"SQL": "select * from t2 union all select * from t1",
"Plan": [
"Union_8 20000.00 root ",
"├─TableReader_11 10000.00 root data:TableFullScan_10",
"│ └─TableFullScan_10 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─TableReader_14 10000.00 root data:TableFullScan_13",
" └─TableFullScan_13 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"1",
"1",
"2",
"2",
"3",
"<nil>",
"<nil>",
"<nil>"
]
},
{
"SQL": "select * from t1 except select * from t3",
"Plan": [
"HashJoin_7 6400.00 root anti semi join, equal:[nulleq(test.t1.a, test.t3.a)]",
"├─TableReader_18(Build) 10000.00 root data:TableFullScan_17",
"│ └─TableFullScan_17 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"└─HashAgg_10(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_15 10000.00 root data:TableFullScan_14",
" └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"<nil>"
]
},
{
"SQL": "select * from t1 intersect select * from t2",
"Plan": [
"HashJoin_7 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t2.a)]",
"├─TableReader_18(Build) 10000.00 root data:TableFullScan_17",
"│ └─TableFullScan_17 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─HashAgg_10(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_15 10000.00 root data:TableFullScan_14",
" └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"2",
"<nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 union all select * from t3",
"Plan": [
"Union_11 30000.00 root ",
"├─TableReader_14 10000.00 root data:TableFullScan_13",
"│ └─TableFullScan_13 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"├─TableReader_17 10000.00 root data:TableFullScan_16",
"│ └─TableFullScan_16 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─TableReader_20 10000.00 root data:TableFullScan_19",
" └─TableFullScan_19 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo"
],
"Res": [
"1",
"1",
"1",
"2",
"2",
"2",
"3",
"3",
"<nil>",
"<nil>",
"<nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 except select * from t3",
"Plan": [
"HashJoin_12 12800.00 root anti semi join, equal:[nulleq(Column#7, test.t3.a)]",
"├─TableReader_25(Build) 10000.00 root data:TableFullScan_24",
"│ └─TableFullScan_24 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"└─HashAgg_15(Probe) 16000.00 root group by:Column#7, funcs:firstrow(Column#7)->Column#7",
" └─Union_16 20000.00 root ",
" ├─TableReader_19 10000.00 root data:TableFullScan_18",
" │ └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
" └─TableReader_22 10000.00 root data:TableFullScan_21",
" └─TableFullScan_21 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
],
"Res": [
"1",
"<nil>"
]
},
{
"SQL": "select * from t1 intersect select * from t2 intersect select * from t1",
"Plan": [
"HashJoin_12 5120.00 root semi join, equal:[nulleq(test.t1.a, test.t1.a)]",
"├─TableReader_27(Build) 10000.00 root data:TableFullScan_26",
"│ └─TableFullScan_26 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─HashJoin_14(Probe) 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t2.a)]",
" ├─TableReader_24(Build) 10000.00 root data:TableFullScan_23",
" │ └─TableFullScan_23 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
" └─HashAgg_17(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_22 10000.00 root data:TableFullScan_21",
" └─TableFullScan_21 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"2",
"<nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 intersect select * from t3",
"Plan": [
"Union_12 16400.00 root ",
"├─TableReader_15 10000.00 root data:TableFullScan_14",
"│ └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─HashJoin_17 6400.00 root semi join, equal:[nulleq(test.t2.a, test.t3.a)]",
" ├─TableReader_27(Build) 10000.00 root data:TableFullScan_26",
" │ └─TableFullScan_26 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
" └─HashAgg_20(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a",
" └─TableReader_25 10000.00 root data:TableFullScan_24",
" └─TableFullScan_24 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
],
"Res": [
"1",
"1",
"2",
"2",
"3",
"<nil>"
]
},
{
"SQL": "select * from t1 except select * from t2 intersect select * from t3",
"Plan": [
"HashJoin_11 6400.00 root anti semi join, equal:[nulleq(test.t1.a, test.t2.a)]",
"├─HashJoin_20(Build) 6400.00 root semi join, equal:[nulleq(test.t2.a, test.t3.a)]",
"│ ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30",
"│ │ └─TableFullScan_30 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"│ └─HashAgg_23(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a",
"│ └─TableReader_28 10000.00 root data:TableFullScan_27",
"│ └─TableFullScan_27 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─HashAgg_14(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_19 10000.00 root data:TableFullScan_18",
" └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"3",
"<nil>"
]
},
{
"SQL": "select * from t1 intersect (select * from t2 except (select * from t3))",
"Plan": [
"HashJoin_11 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t2.a)]",
"├─HashJoin_20(Build) 6400.00 root anti semi join, equal:[nulleq(test.t2.a, test.t3.a)]",
"│ ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30",
"│ │ └─TableFullScan_30 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"│ └─HashAgg_23(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a",
"│ └─TableReader_28 10000.00 root data:TableFullScan_27",
"│ └─TableFullScan_27 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─HashAgg_14(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_19 10000.00 root data:TableFullScan_18",
" └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1",
"<nil>"
]
},
{
"SQL": "select * from t1 union all (select * from t2 except select * from t3)",
"Plan": [
"Union_12 16400.00 root ",
"├─TableReader_15 10000.00 root data:TableFullScan_14",
"│ └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─HashJoin_17 6400.00 root anti semi join, equal:[nulleq(test.t2.a, test.t3.a)]",
" ├─TableReader_27(Build) 10000.00 root data:TableFullScan_26",
" │ └─TableFullScan_26 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
" └─HashAgg_20(Probe) 8000.00 root group by:test.t2.a, funcs:firstrow(test.t2.a)->test.t2.a",
" └─TableReader_25 10000.00 root data:TableFullScan_24",
" └─TableFullScan_24 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
],
"Res": [
"1",
"1",
"1",
"2",
"3",
"<nil>",
"<nil>"
]
},
{
"SQL": "select * from t1 union (select * from t2 union all select * from t3)",
"Plan": [
"HashAgg_16 24000.00 root group by:Column#8, funcs:firstrow(Column#8)->Column#8",
"└─Union_17 30000.00 root ",
" ├─TableReader_20 10000.00 root data:TableFullScan_19",
" │ └─TableFullScan_19 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
" └─Union_22 20000.00 root ",
" ├─TableReader_25 10000.00 root data:TableFullScan_24",
" │ └─TableFullScan_24 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
" └─TableReader_28 10000.00 root data:TableFullScan_27",
" └─TableFullScan_27 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo"
],
"Res": [
"1",
"2",
"3",
"<nil>"
]
},
{
"SQL": "(select * from t1 intersect select * from t1) except (select * from t2 union select * from t3)",
"Plan": [
"HashJoin_18 5120.00 root anti semi join, equal:[nulleq(test.t1.a, Column#9)]",
"├─HashAgg_33(Build) 16000.00 root group by:Column#9, funcs:firstrow(Column#9)->Column#9",
"│ └─Union_34 20000.00 root ",
"│ ├─TableReader_37 10000.00 root data:TableFullScan_36",
"│ │ └─TableFullScan_36 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"│ └─TableReader_40 10000.00 root data:TableFullScan_39",
"│ └─TableFullScan_39 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"└─HashJoin_20(Probe) 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t1.a)]",
" ├─TableReader_30(Build) 10000.00 root data:TableFullScan_29",
" │ └─TableFullScan_29 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
" └─HashAgg_23(Probe) 8000.00 root group by:test.t1.a, funcs:firstrow(test.t1.a)->test.t1.a",
" └─TableReader_28 10000.00 root data:TableFullScan_27",
" └─TableFullScan_27 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": null
}
]
},
{
"Name": "TestSetOperationOnDiffColType",
"Cases": [
{
"SQL": "select * from t3 union select * from t1",
"Plan": [
"HashAgg_11 16000.00 root group by:Column#7, Column#8, funcs:firstrow(Column#7)->Column#7, funcs:firstrow(Column#8)->Column#8",
"└─Union_12 20000.00 root ",
" ├─TableReader_15 10000.00 root data:TableFullScan_14",
" │ └─TableFullScan_14 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
" └─Projection_16 10000.00 root test.t1.a, cast(test.t1.b, decimal(30,10) BINARY)->Column#8",
" └─TableReader_18 10000.00 root data:TableFullScan_17",
" └─TableFullScan_17 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1.0000000000",
"2 2.0000000000",
"2 2.1000000000",
"3 3.0000000000",
"<nil> <nil>"
]
},
{
"SQL": "select * from t2 union all select * from t1",
"Plan": [
"Union_8 20000.00 root ",
"├─TableReader_11 10000.00 root data:TableFullScan_10",
"│ └─TableFullScan_10 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─Projection_12 10000.00 root test.t1.a, cast(test.t1.b, varchar(20) BINARY CHARACTER SET utf8mb4 COLLATE utf8mb4_bin)->Column#8",
" └─TableReader_14 10000.00 root data:TableFullScan_13",
" └─TableFullScan_13 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"1 1",
"1 1",
"2 2",
"2 2",
"3 3",
"<nil> 3",
"<nil> <nil>",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 except select * from t3",
"Plan": [
"HashJoin_7 6400.00 root anti semi join, equal:[nulleq(test.t1.a, test.t3.a)], other cond:nulleq(cast(test.t1.b), test.t3.b)",
"├─TableReader_18(Build) 10000.00 root data:TableFullScan_17",
"│ └─TableFullScan_17 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"└─HashAgg_10(Probe) 8000.00 root group by:test.t1.a, test.t1.b, funcs:firstrow(test.t1.a)->test.t1.a, funcs:firstrow(test.t1.b)->test.t1.b",
" └─TableReader_15 10000.00 root data:TableFullScan_14",
" └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"2 2",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 intersect select * from t2",
"Plan": [
"HashJoin_7 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t2.a)], other cond:nulleq(cast(test.t1.b), cast(test.t2.b))",
"├─TableReader_18(Build) 10000.00 root data:TableFullScan_17",
"│ └─TableFullScan_17 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─HashAgg_10(Probe) 8000.00 root group by:test.t1.a, test.t1.b, funcs:firstrow(test.t1.a)->test.t1.a, funcs:firstrow(test.t1.b)->test.t1.b",
" └─TableReader_15 10000.00 root data:TableFullScan_14",
" └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"2 2",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 union all select * from t3",
"Plan": [
"Union_11 30000.00 root ",
"├─Projection_12 10000.00 root test.t1.a, cast(test.t1.b, varbinary(30) BINARY)->Column#11",
"│ └─TableReader_14 10000.00 root data:TableFullScan_13",
"│ └─TableFullScan_13 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"├─Projection_15 10000.00 root test.t2.a, cast(test.t2.b, varbinary(30) BINARY)->Column#11",
"│ └─TableReader_17 10000.00 root data:TableFullScan_16",
"│ └─TableFullScan_16 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─Projection_18 10000.00 root test.t3.a, cast(test.t3.b, varbinary(30) BINARY)->Column#11",
" └─TableReader_20 10000.00 root data:TableFullScan_19",
" └─TableFullScan_19 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"1 1",
"1 1",
"2 2",
"2 2",
"2 2.1000000000",
"3 3",
"3 3.0000000000",
"<nil> 3",
"<nil> <nil>",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 except select * from t3",
"Plan": [
"HashJoin_12 12800.00 root anti semi join, equal:[nulleq(Column#10, test.t3.a)], other cond:nulleq(cast(Column#11), cast(test.t3.b))",
"├─TableReader_25(Build) 10000.00 root data:TableFullScan_24",
"│ └─TableFullScan_24 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"└─HashAgg_15(Probe) 16000.00 root group by:Column#10, Column#11, funcs:firstrow(Column#10)->Column#10, funcs:firstrow(Column#11)->Column#11",
" └─Union_16 20000.00 root ",
" ├─Projection_17 10000.00 root test.t1.a, cast(test.t1.b, varbinary(20))->Column#11",
" │ └─TableReader_19 10000.00 root data:TableFullScan_18",
" │ └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
" └─Projection_20 10000.00 root test.t2.a, cast(test.t2.b, varbinary(20))->Column#11",
" └─TableReader_22 10000.00 root data:TableFullScan_21",
" └─TableFullScan_21 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"2 2",
"<nil> 3",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 intersect select * from t2 intersect select * from t1",
"Plan": [
"HashJoin_12 5120.00 root semi join, equal:[nulleq(test.t1.a, test.t1.a) nulleq(test.t1.b, test.t1.b)]",
"├─TableReader_27(Build) 10000.00 root data:TableFullScan_26",
"│ └─TableFullScan_26 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─HashJoin_14(Probe) 6400.00 root semi join, equal:[nulleq(test.t1.a, test.t2.a)], other cond:nulleq(cast(test.t1.b), cast(test.t2.b))",
" ├─TableReader_24(Build) 10000.00 root data:TableFullScan_23",
" │ └─TableFullScan_23 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
" └─HashAgg_17(Probe) 8000.00 root group by:test.t1.a, test.t1.b, funcs:firstrow(test.t1.a)->test.t1.a, funcs:firstrow(test.t1.b)->test.t1.b",
" └─TableReader_22 10000.00 root data:TableFullScan_21",
" └─TableFullScan_21 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"2 2",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 union all select * from t2 intersect select * from t3",
"Plan": [
"Union_12 16400.00 root ",
"├─Projection_13 10000.00 root test.t1.a, cast(test.t1.b, varbinary(20))->Column#11",
"│ └─TableReader_15 10000.00 root data:TableFullScan_14",
"│ └─TableFullScan_14 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo",
"└─Projection_16 6400.00 root test.t2.a, cast(test.t2.b, varbinary(20))->Column#11",
" └─HashJoin_17 6400.00 root semi join, equal:[nulleq(test.t2.a, test.t3.a)], other cond:nulleq(cast(test.t2.b), cast(test.t3.b))",
" ├─TableReader_27(Build) 10000.00 root data:TableFullScan_26",
" │ └─TableFullScan_26 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
" └─HashAgg_20(Probe) 8000.00 root group by:test.t2.a, test.t2.b, funcs:firstrow(test.t2.a)->test.t2.a, funcs:firstrow(test.t2.b)->test.t2.b",
" └─TableReader_25 10000.00 root data:TableFullScan_24",
" └─TableFullScan_24 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"1 1",
"2 2",
"3 3",
"<nil> <nil>"
]
},
{
"SQL": "select * from t1 except select * from t2 intersect select * from t3",
"Plan": [
"HashJoin_11 6400.00 root anti semi join, equal:[nulleq(test.t1.a, test.t2.a)], other cond:nulleq(cast(test.t1.b), cast(test.t2.b))",
"├─HashJoin_20(Build) 6400.00 root semi join, equal:[nulleq(test.t2.a, test.t3.a)], other cond:nulleq(cast(test.t2.b), cast(test.t3.b))",
"│ ├─TableReader_31(Build) 10000.00 root data:TableFullScan_30",
"│ │ └─TableFullScan_30 10000.00 cop[tikv] table:t3 keep order:false, stats:pseudo",
"│ └─HashAgg_23(Probe) 8000.00 root group by:test.t2.a, test.t2.b, funcs:firstrow(test.t2.a)->test.t2.a, funcs:firstrow(test.t2.b)->test.t2.b",
"│ └─TableReader_28 10000.00 root data:TableFullScan_27",
"│ └─TableFullScan_27 10000.00 cop[tikv] table:t2 keep order:false, stats:pseudo",
"└─HashAgg_14(Probe) 8000.00 root group by:test.t1.a, test.t1.b, funcs:firstrow(test.t1.a)->test.t1.a, funcs:firstrow(test.t1.b)->test.t1.b",
" └─TableReader_19 10000.00 root data:TableFullScan_18",
" └─TableFullScan_18 10000.00 cop[tikv] table:t1 keep order:false, stats:pseudo"
],
"Res": [
"1 1",
"2 2",
"3 3",
"<nil> <nil>"
]
}
]
}
]