181 lines
7.7 KiB
JSON
181 lines
7.7 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>"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|