Skip to content

Commit 100ab75

Browse files
committed
refactor(cubesql): Rename ungrouped field of WrapperPullupReplacer to push_to_cube
1 parent 3498c2e commit 100ab75

30 files changed

+310
-285
lines changed

rust/cubesql/cubesql/src/compile/rewrite/mod.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,15 @@ crate::plan_to_language! {
470470
WrapperPullupReplacer {
471471
member: Arc<LogicalPlan>,
472472
alias_to_cube: Vec<(String, String)>,
473-
ungrouped: bool,
473+
// When `member` is expression this means that result of this replacer should be used as member expression in load query to Cube.
474+
// When `member` is logical plan node this means that logical plan inside allows to push to Cube
475+
// This flag should make roundtrip from top to bottom and back.
476+
// Important caveat: it means that result should be used for push to cube *and only there*.
477+
// So it's more like "must push to Cube" than "can push to Cube"
478+
// This part is important for rewrites like SUM(sumMeasure) => sumMeasure
479+
// We can use sumMeasure instead of SUM(sumMeasure) ONLY in with push to Cube
480+
// An vice versa, we can't use SUM(sumMeasure) in grouped query to Cube, so it can be allowed ONLY without push to grouped Cube query
481+
push_to_cube: bool,
474482
in_projection: bool,
475483
cube_members: Vec<LogicalPlan>,
476484
},
@@ -1946,13 +1954,13 @@ fn wrapper_pushdown_replacer(
19461954
fn wrapper_pullup_replacer(
19471955
members: impl Display,
19481956
alias_to_cube: impl Display,
1949-
ungrouped: impl Display,
1957+
push_to_cube: impl Display,
19501958
in_projection: impl Display,
19511959
cube_members: impl Display,
19521960
) -> String {
19531961
format!(
19541962
"(WrapperPullupReplacer {} {} {} {} {})",
1955-
members, alias_to_cube, ungrouped, in_projection, cube_members
1963+
members, alias_to_cube, push_to_cube, in_projection, cube_members
19561964
)
19571965
}
19581966

rust/cubesql/cubesql/src/compile/rewrite/rules/wrapper/aggregate.rs

Lines changed: 34 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::{
1212
wrapped_select_window_expr_empty_tail, wrapper_pullup_replacer, wrapper_pushdown_replacer,
1313
AggregateFunctionExprDistinct, AggregateFunctionExprFun, AliasExprAlias, ColumnExprColumn,
1414
ListType, LogicalPlanLanguage, WrappedSelectPushToCube, WrapperPullupReplacerAliasToCube,
15-
WrapperPullupReplacerUngrouped, WrapperPushdownReplacerPushToCube,
15+
WrapperPullupReplacerPushToCube, WrapperPushdownReplacerPushToCube,
1616
},
1717
copy_flag,
1818
transport::V1CubeMetaMeasureExt,
@@ -32,7 +32,7 @@ impl WrapperRules {
3232
wrapper_pullup_replacer(
3333
"?cube_scan_input",
3434
"?alias_to_cube",
35-
"?ungrouped",
35+
"?push_to_cube",
3636
"?in_projection",
3737
"?cube_members",
3838
),
@@ -48,14 +48,14 @@ impl WrapperRules {
4848
wrapper_pullup_replacer(
4949
wrapped_select_projection_expr_empty_tail(),
5050
"?alias_to_cube",
51-
"?ungrouped",
51+
"?push_to_cube",
5252
"WrapperPullupReplacerInProjection:false",
5353
"?cube_members",
5454
),
5555
wrapper_pullup_replacer(
5656
wrapped_select_subqueries_empty_tail(),
5757
"?alias_to_cube",
58-
"?ungrouped",
58+
"?push_to_cube",
5959
"WrapperPullupReplacerInProjection:false",
6060
"?cube_members",
6161
),
@@ -76,22 +76,22 @@ impl WrapperRules {
7676
wrapper_pullup_replacer(
7777
wrapped_select_window_expr_empty_tail(),
7878
"?alias_to_cube",
79-
"?ungrouped",
79+
"?push_to_cube",
8080
"WrapperPullupReplacerInProjection:false",
8181
"?cube_members",
8282
),
8383
wrapper_pullup_replacer(
8484
"?cube_scan_input",
8585
"?alias_to_cube",
86-
"?ungrouped",
86+
"?push_to_cube",
8787
"WrapperPullupReplacerInProjection:false",
8888
"?cube_members",
8989
),
9090
wrapped_select_joins_empty_tail(),
9191
wrapper_pullup_replacer(
9292
wrapped_select_filter_expr_empty_tail(),
9393
"?alias_to_cube",
94-
"?ungrouped",
94+
"?push_to_cube",
9595
"WrapperPullupReplacerInProjection:false",
9696
"?cube_members",
9797
),
@@ -101,7 +101,7 @@ impl WrapperRules {
101101
wrapper_pullup_replacer(
102102
wrapped_select_order_expr_empty_tail(),
103103
"?alias_to_cube",
104-
"?ungrouped",
104+
"?push_to_cube",
105105
"WrapperPullupReplacerInProjection:false",
106106
"?cube_members",
107107
),
@@ -115,7 +115,7 @@ impl WrapperRules {
115115
self.transform_aggregate(
116116
"?group_expr",
117117
"?aggr_expr",
118-
"?ungrouped",
118+
"?push_to_cube",
119119
"?pushdown_push_to_cube",
120120
"?select_push_to_cube",
121121
),
@@ -147,7 +147,7 @@ impl WrapperRules {
147147
wrapper_pullup_replacer(
148148
"?rollout_members",
149149
"?alias_to_cube",
150-
"?ungrouped",
150+
"?push_to_cube",
151151
"WrapperPullupReplacerInProjection:false",
152152
"?cube_members",
153153
),
@@ -156,7 +156,7 @@ impl WrapperRules {
156156
wrapper_pullup_replacer(
157157
grouping_set_expr("?rollout_members", "?type"),
158158
"?alias_to_cube",
159-
"?ungrouped",
159+
"?push_to_cube",
160160
"WrapperPullupReplacerInProjection:false",
161161
"?cube_members",
162162
),
@@ -186,7 +186,7 @@ impl WrapperRules {
186186
wrapper_pullup_replacer(
187187
"?measure",
188188
"?alias_to_cube",
189-
"WrapperPullupReplacerUngrouped:true",
189+
"WrapperPullupReplacerPushToCube:true",
190190
"?in_projection",
191191
"?cube_members",
192192
),
@@ -255,7 +255,7 @@ impl WrapperRules {
255255
wrapper_pullup_replacer(
256256
"?cube_scan_input",
257257
"?alias_to_cube",
258-
"?ungrouped",
258+
"?push_to_cube",
259259
"?in_projection",
260260
"?cube_members",
261261
),
@@ -274,7 +274,7 @@ impl WrapperRules {
274274
wrapper_pullup_replacer(
275275
wrapped_select_projection_expr_empty_tail(),
276276
"?alias_to_cube",
277-
"?ungrouped",
277+
"?push_to_cube",
278278
"WrapperPullupReplacerInProjection:false",
279279
"?cube_members",
280280
),
@@ -302,22 +302,22 @@ impl WrapperRules {
302302
wrapper_pullup_replacer(
303303
wrapped_select_window_expr_empty_tail(),
304304
"?alias_to_cube",
305-
"?ungrouped",
305+
"?push_to_cube",
306306
"WrapperPullupReplacerInProjection:false",
307307
"?cube_members",
308308
),
309309
wrapper_pullup_replacer(
310310
"?cube_scan_input",
311311
"?alias_to_cube",
312-
"?ungrouped",
312+
"?push_to_cube",
313313
"WrapperPullupReplacerInProjection:false",
314314
"?cube_members",
315315
),
316316
wrapped_select_joins_empty_tail(),
317317
wrapper_pullup_replacer(
318318
wrapped_select_filter_expr_empty_tail(),
319319
"?alias_to_cube",
320-
"?ungrouped",
320+
"?push_to_cube",
321321
"WrapperPullupReplacerInProjection:false",
322322
"?cube_members",
323323
),
@@ -327,7 +327,7 @@ impl WrapperRules {
327327
wrapper_pullup_replacer(
328328
wrapped_select_order_expr_empty_tail(),
329329
"?alias_to_cube",
330-
"?ungrouped",
330+
"?push_to_cube",
331331
"WrapperPullupReplacerInProjection:false",
332332
"?cube_members",
333333
),
@@ -342,7 +342,7 @@ impl WrapperRules {
342342
"?alias_to_cube",
343343
"?group_expr",
344344
"?aggr_expr",
345-
"?ungrouped",
345+
"?push_to_cube",
346346
"?pushdown_push_to_cube",
347347
"?select_push_to_cube",
348348
),
@@ -353,13 +353,13 @@ impl WrapperRules {
353353
&self,
354354
group_expr_var: &'static str,
355355
aggr_expr_var: &'static str,
356-
ungrouped_var: &'static str,
356+
push_to_cube_var: &'static str,
357357
pushdown_push_to_cube_var: &'static str,
358358
select_push_to_cube_var: &'static str,
359359
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
360360
let group_expr_var = var!(group_expr_var);
361361
let aggr_expr_var = var!(aggr_expr_var);
362-
let ungrouped_var = var!(ungrouped_var);
362+
let push_to_cube_var = var!(push_to_cube_var);
363363
let pushdown_push_to_cube_var = var!(pushdown_push_to_cube_var);
364364
let select_push_to_cube_var = var!(select_push_to_cube_var);
365365
move |egraph, subst| {
@@ -368,7 +368,7 @@ impl WrapperRules {
368368
subst,
369369
group_expr_var,
370370
aggr_expr_var,
371-
ungrouped_var,
371+
push_to_cube_var,
372372
pushdown_push_to_cube_var,
373373
select_push_to_cube_var,
374374
)
@@ -380,14 +380,14 @@ impl WrapperRules {
380380
alias_to_cube_var: &'static str,
381381
group_expr_var: &'static str,
382382
aggr_expr_var: &'static str,
383-
ungrouped_var: &'static str,
383+
push_to_cube_var: &'static str,
384384
pushdown_push_to_cube_var: &'static str,
385385
select_push_to_cube_var: &'static str,
386386
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
387387
let alias_to_cube_var = var!(alias_to_cube_var);
388388
let group_expr_var = var!(group_expr_var);
389389
let aggr_expr_var = var!(aggr_expr_var);
390-
let ungrouped_var = var!(ungrouped_var);
390+
let push_to_cube_var = var!(push_to_cube_var);
391391
let pushdown_push_to_cube_var = var!(pushdown_push_to_cube_var);
392392
let select_push_to_cube_var = var!(select_push_to_cube_var);
393393
let meta = self.meta_context.clone();
@@ -403,7 +403,7 @@ impl WrapperRules {
403403
subst,
404404
group_expr_var,
405405
aggr_expr_var,
406-
ungrouped_var,
406+
push_to_cube_var,
407407
pushdown_push_to_cube_var,
408408
select_push_to_cube_var,
409409
)
@@ -418,7 +418,7 @@ impl WrapperRules {
418418
subst: &mut Subst,
419419
group_expr_var: Var,
420420
aggr_expr_var: Var,
421-
ungrouped_var: Var,
421+
push_to_cube_var: Var,
422422
pushdown_push_to_cube_var: Var,
423423
select_push_to_cube_var: Var,
424424
) -> bool {
@@ -432,21 +432,24 @@ impl WrapperRules {
432432
if !copy_flag!(
433433
egraph,
434434
subst,
435-
ungrouped_var,
436-
WrapperPullupReplacerUngrouped,
435+
push_to_cube_var,
436+
WrapperPullupReplacerPushToCube,
437437
pushdown_push_to_cube_var,
438438
WrapperPushdownReplacerPushToCube
439439
) {
440440
return false;
441441
}
442442

443-
for ungrouped in
444-
var_iter!(egraph[subst[ungrouped_var]], WrapperPullupReplacerUngrouped).cloned()
443+
for push_to_cube in var_iter!(
444+
egraph[subst[push_to_cube_var]],
445+
WrapperPullupReplacerPushToCube
446+
)
447+
.cloned()
445448
{
446449
subst.insert(
447450
select_push_to_cube_var,
448451
egraph.add(LogicalPlanLanguage::WrappedSelectPushToCube(
449-
WrappedSelectPushToCube(ungrouped),
452+
WrappedSelectPushToCube(push_to_cube),
450453
)),
451454
);
452455
return true;

rust/cubesql/cubesql/src/compile/rewrite/rules/wrapper/aggregate_function.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl WrapperRules {
4242
vec![wrapper_pullup_replacer(
4343
"?expr",
4444
"?alias_to_cube",
45-
"?ungrouped",
45+
"?push_to_cube",
4646
"?in_projection",
4747
"?cube_members",
4848
)],
@@ -51,7 +51,7 @@ impl WrapperRules {
5151
wrapper_pullup_replacer(
5252
agg_fun_expr("?fun", vec!["?expr"], "?distinct"),
5353
"?alias_to_cube",
54-
"?ungrouped",
54+
"?push_to_cube",
5555
"?in_projection",
5656
"?cube_members",
5757
),

rust/cubesql/cubesql/src/compile/rewrite/rules/wrapper/alias.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl WrapperRules {
3232
wrapper_pullup_replacer(
3333
"?expr",
3434
"?alias_to_cube",
35-
"?ungrouped",
35+
"?push_to_cube",
3636
"?in_projection",
3737
"?cube_members",
3838
),
@@ -41,7 +41,7 @@ impl WrapperRules {
4141
wrapper_pullup_replacer(
4242
alias_expr("?expr", "?alias"),
4343
"?alias_to_cube",
44-
"?ungrouped",
44+
"?push_to_cube",
4545
"?in_projection",
4646
"?cube_members",
4747
),

rust/cubesql/cubesql/src/compile/rewrite/rules/wrapper/binary_expr.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,23 @@ impl WrapperRules {
4646
wrapper_pullup_replacer(
4747
"?left",
4848
"?alias_to_cube",
49-
"?ungrouped",
49+
"?push_to_cube",
5050
"?in_projection",
5151
"?cube_members",
5252
),
5353
"?op",
5454
wrapper_pullup_replacer(
5555
"?right",
5656
"?alias_to_cube",
57-
"?ungrouped",
57+
"?push_to_cube",
5858
"?in_projection",
5959
"?cube_members",
6060
),
6161
),
6262
wrapper_pullup_replacer(
6363
binary_expr("?left", "?op", "?right"),
6464
"?alias_to_cube",
65-
"?ungrouped",
65+
"?push_to_cube",
6666
"?in_projection",
6767
"?cube_members",
6868
),

rust/cubesql/cubesql/src/compile/rewrite/rules/wrapper/case.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,29 +52,29 @@ impl WrapperRules {
5252
wrapper_pullup_replacer(
5353
"?when",
5454
"?alias_to_cube",
55-
"?ungrouped",
55+
"?push_to_cube",
5656
"?in_projection",
5757
"?cube_members",
5858
),
5959
wrapper_pullup_replacer(
6060
"?then",
6161
"?alias_to_cube",
62-
"?ungrouped",
62+
"?push_to_cube",
6363
"?in_projection",
6464
"?cube_members",
6565
),
6666
wrapper_pullup_replacer(
6767
"?else",
6868
"?alias_to_cube",
69-
"?ungrouped",
69+
"?push_to_cube",
7070
"?in_projection",
7171
"?cube_members",
7272
),
7373
),
7474
wrapper_pullup_replacer(
7575
case_expr_var_arg("?when", "?then", "?else"),
7676
"?alias_to_cube",
77-
"?ungrouped",
77+
"?push_to_cube",
7878
"?in_projection",
7979
"?cube_members",
8080
),

0 commit comments

Comments
 (0)