Skip to content

Commit bece297

Browse files
committed
feat(query): fix select view err
1 parent f7df2fe commit bece297

File tree

3 files changed

+275
-4
lines changed

3 files changed

+275
-4
lines changed

src/query/ast/src/ast/query.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -412,14 +412,14 @@ impl<'a> Display for SetExpr<'a> {
412412
write!(f, " UNION ")?;
413413
}
414414
SetOperator::Except => {
415-
write!(f, " EXCEPT")?;
415+
write!(f, " EXCEPT ")?;
416416
}
417417
SetOperator::Intersect => {
418-
write!(f, " INTERSECT")?;
418+
write!(f, " INTERSECT ")?;
419419
}
420420
}
421421
if set_operation.all {
422-
write!(f, " ALL")?;
422+
write!(f, "ALL ")?;
423423
}
424424
write!(f, "{}", set_operation.right)?;
425425
}

src/query/ast/tests/it/parser.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,9 @@ fn test_query() {
377377
order by custdist desc nulls first, c_count asc, totacctbal nulls last
378378
limit 10, totacctbal"#,
379379
r#"select * from t1 union select * from t2"#,
380+
r#"select * from t1 except select * from t2"#,
380381
r#"select * from t1 union select * from t2 union select * from t3"#,
382+
r#"select * from t1 union select * from t2 union all select * from t3"#,
381383
r#"select * from t1 union select * from t2 intersect select * from t3"#,
382384
r#"(select * from t1 union select * from t2) union select * from t3"#,
383385
r#"select * from t1 union (select * from t2 union select * from t3)"#,

src/query/ast/tests/it/testdata/query.txt

Lines changed: 270 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2865,6 +2865,114 @@ Query {
28652865
}
28662866

28672867

2868+
---------- Input ----------
2869+
select * from t1 except select * from t2
2870+
---------- Output ---------
2871+
SELECT * FROM t1 EXCEPT SELECT * FROM t2
2872+
---------- AST ------------
2873+
Query {
2874+
span: [
2875+
SELECT(0..6),
2876+
Multiply(7..8),
2877+
FROM(9..13),
2878+
Ident(14..16),
2879+
EXCEPT(17..23),
2880+
SELECT(24..30),
2881+
Multiply(31..32),
2882+
FROM(33..37),
2883+
Ident(38..40),
2884+
],
2885+
with: None,
2886+
body: SetOperation(
2887+
SetOperation {
2888+
span: [
2889+
EXCEPT(17..23),
2890+
],
2891+
op: Except,
2892+
all: false,
2893+
left: Select(
2894+
SelectStmt {
2895+
span: [
2896+
SELECT(0..6),
2897+
Multiply(7..8),
2898+
FROM(9..13),
2899+
Ident(14..16),
2900+
],
2901+
distinct: false,
2902+
select_list: [
2903+
QualifiedName(
2904+
[
2905+
Star,
2906+
],
2907+
),
2908+
],
2909+
from: [
2910+
Table {
2911+
span: [
2912+
Ident(14..16),
2913+
],
2914+
catalog: None,
2915+
database: None,
2916+
table: Identifier {
2917+
name: "t1",
2918+
quote: None,
2919+
span: Ident(14..16),
2920+
},
2921+
alias: None,
2922+
travel_point: None,
2923+
},
2924+
],
2925+
selection: None,
2926+
group_by: [],
2927+
having: None,
2928+
},
2929+
),
2930+
right: Select(
2931+
SelectStmt {
2932+
span: [
2933+
SELECT(24..30),
2934+
Multiply(31..32),
2935+
FROM(33..37),
2936+
Ident(38..40),
2937+
],
2938+
distinct: false,
2939+
select_list: [
2940+
QualifiedName(
2941+
[
2942+
Star,
2943+
],
2944+
),
2945+
],
2946+
from: [
2947+
Table {
2948+
span: [
2949+
Ident(38..40),
2950+
],
2951+
catalog: None,
2952+
database: None,
2953+
table: Identifier {
2954+
name: "t2",
2955+
quote: None,
2956+
span: Ident(38..40),
2957+
},
2958+
alias: None,
2959+
travel_point: None,
2960+
},
2961+
],
2962+
selection: None,
2963+
group_by: [],
2964+
having: None,
2965+
},
2966+
),
2967+
},
2968+
),
2969+
order_by: [],
2970+
limit: [],
2971+
offset: None,
2972+
format: None,
2973+
}
2974+
2975+
28682976
---------- Input ----------
28692977
select * from t1 union select * from t2 union select * from t3
28702978
---------- Output ---------
@@ -3024,10 +3132,171 @@ Query {
30243132
}
30253133

30263134

3135+
---------- Input ----------
3136+
select * from t1 union select * from t2 union all select * from t3
3137+
---------- Output ---------
3138+
SELECT * FROM t1 UNION SELECT * FROM t2 UNION ALL SELECT * FROM t3
3139+
---------- AST ------------
3140+
Query {
3141+
span: [
3142+
SELECT(0..6),
3143+
Multiply(7..8),
3144+
FROM(9..13),
3145+
Ident(14..16),
3146+
UNION(17..22),
3147+
SELECT(23..29),
3148+
Multiply(30..31),
3149+
FROM(32..36),
3150+
Ident(37..39),
3151+
UNION(40..45),
3152+
ALL(46..49),
3153+
SELECT(50..56),
3154+
Multiply(57..58),
3155+
FROM(59..63),
3156+
Ident(64..66),
3157+
],
3158+
with: None,
3159+
body: SetOperation(
3160+
SetOperation {
3161+
span: [
3162+
UNION(40..45),
3163+
ALL(46..49),
3164+
],
3165+
op: Union,
3166+
all: true,
3167+
left: SetOperation(
3168+
SetOperation {
3169+
span: [
3170+
UNION(17..22),
3171+
],
3172+
op: Union,
3173+
all: false,
3174+
left: Select(
3175+
SelectStmt {
3176+
span: [
3177+
SELECT(0..6),
3178+
Multiply(7..8),
3179+
FROM(9..13),
3180+
Ident(14..16),
3181+
],
3182+
distinct: false,
3183+
select_list: [
3184+
QualifiedName(
3185+
[
3186+
Star,
3187+
],
3188+
),
3189+
],
3190+
from: [
3191+
Table {
3192+
span: [
3193+
Ident(14..16),
3194+
],
3195+
catalog: None,
3196+
database: None,
3197+
table: Identifier {
3198+
name: "t1",
3199+
quote: None,
3200+
span: Ident(14..16),
3201+
},
3202+
alias: None,
3203+
travel_point: None,
3204+
},
3205+
],
3206+
selection: None,
3207+
group_by: [],
3208+
having: None,
3209+
},
3210+
),
3211+
right: Select(
3212+
SelectStmt {
3213+
span: [
3214+
SELECT(23..29),
3215+
Multiply(30..31),
3216+
FROM(32..36),
3217+
Ident(37..39),
3218+
],
3219+
distinct: false,
3220+
select_list: [
3221+
QualifiedName(
3222+
[
3223+
Star,
3224+
],
3225+
),
3226+
],
3227+
from: [
3228+
Table {
3229+
span: [
3230+
Ident(37..39),
3231+
],
3232+
catalog: None,
3233+
database: None,
3234+
table: Identifier {
3235+
name: "t2",
3236+
quote: None,
3237+
span: Ident(37..39),
3238+
},
3239+
alias: None,
3240+
travel_point: None,
3241+
},
3242+
],
3243+
selection: None,
3244+
group_by: [],
3245+
having: None,
3246+
},
3247+
),
3248+
},
3249+
),
3250+
right: Select(
3251+
SelectStmt {
3252+
span: [
3253+
SELECT(50..56),
3254+
Multiply(57..58),
3255+
FROM(59..63),
3256+
Ident(64..66),
3257+
],
3258+
distinct: false,
3259+
select_list: [
3260+
QualifiedName(
3261+
[
3262+
Star,
3263+
],
3264+
),
3265+
],
3266+
from: [
3267+
Table {
3268+
span: [
3269+
Ident(64..66),
3270+
],
3271+
catalog: None,
3272+
database: None,
3273+
table: Identifier {
3274+
name: "t3",
3275+
quote: None,
3276+
span: Ident(64..66),
3277+
},
3278+
alias: None,
3279+
travel_point: None,
3280+
},
3281+
],
3282+
selection: None,
3283+
group_by: [],
3284+
having: None,
3285+
},
3286+
),
3287+
},
3288+
),
3289+
order_by: [],
3290+
limit: [],
3291+
offset: None,
3292+
format: None,
3293+
}
3294+
3295+
30273296
---------- Input ----------
30283297
select * from t1 union select * from t2 intersect select * from t3
30293298
---------- Output ---------
3030-
SELECT * FROM t1 UNION SELECT * FROM t2 INTERSECTSELECT * FROM t3
3299+
SELECT * FROM t1 UNION SELECT * FROM t2 INTERSECT SELECT * FROM t3
30313300
---------- AST ------------
30323301
Query {
30333302
span: [

0 commit comments

Comments
 (0)