File tree Expand file tree Collapse file tree 3 files changed +275
-4
lines changed Expand file tree Collapse file tree 3 files changed +275
-4
lines changed Original file line number Diff line number Diff line change @@ -412,14 +412,14 @@ impl<'a> Display for SetExpr<'a> {
412
412
write ! ( f, " UNION " ) ?;
413
413
}
414
414
SetOperator :: Except => {
415
- write ! ( f, " EXCEPT" ) ?;
415
+ write ! ( f, " EXCEPT " ) ?;
416
416
}
417
417
SetOperator :: Intersect => {
418
- write ! ( f, " INTERSECT" ) ?;
418
+ write ! ( f, " INTERSECT " ) ?;
419
419
}
420
420
}
421
421
if set_operation. all {
422
- write ! ( f, " ALL" ) ?;
422
+ write ! ( f, "ALL " ) ?;
423
423
}
424
424
write ! ( f, "{}" , set_operation. right) ?;
425
425
}
Original file line number Diff line number Diff line change @@ -377,7 +377,9 @@ fn test_query() {
377
377
order by custdist desc nulls first, c_count asc, totacctbal nulls last
378
378
limit 10, totacctbal"# ,
379
379
r#"select * from t1 union select * from t2"# ,
380
+ r#"select * from t1 except select * from t2"# ,
380
381
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"# ,
381
383
r#"select * from t1 union select * from t2 intersect select * from t3"# ,
382
384
r#"(select * from t1 union select * from t2) union select * from t3"# ,
383
385
r#"select * from t1 union (select * from t2 union select * from t3)"# ,
Original file line number Diff line number Diff line change @@ -2865,6 +2865,114 @@ Query {
2865
2865
}
2866
2866
2867
2867
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
+
2868
2976
---------- Input ----------
2869
2977
select * from t1 union select * from t2 union select * from t3
2870
2978
---------- Output ---------
@@ -3024,10 +3132,171 @@ Query {
3024
3132
}
3025
3133
3026
3134
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
+
3027
3296
---------- Input ----------
3028
3297
select * from t1 union select * from t2 intersect select * from t3
3029
3298
---------- Output ---------
3030
- SELECT * FROM t1 UNION SELECT * FROM t2 INTERSECTSELECT * FROM t3
3299
+ SELECT * FROM t1 UNION SELECT * FROM t2 INTERSECT SELECT * FROM t3
3031
3300
---------- AST ------------
3032
3301
Query {
3033
3302
span: [
You can’t perform that action at this time.
0 commit comments