Skip to content

Commit ff0b485

Browse files
committed
refactor(cubesql): Rename ungrouped field of WrappedSelectNode to push_to_cube
This name seems more appropriate, because actual WrappedSelect can represent grouped query when this field is set to true
1 parent 95dc730 commit ff0b485

File tree

12 files changed

+85
-72
lines changed

12 files changed

+85
-72
lines changed

rust/cubesql/cubesql/src/compile/engine/df/scan.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,15 @@ pub struct WrappedSelectNode {
162162
pub order_expr: Vec<Expr>,
163163
pub alias: Option<String>,
164164
pub distinct: bool,
165-
pub ungrouped: bool,
165+
166+
/// States if this node actually a query to Cube or not.
167+
/// When `false` this node will generate SQL on its own, using its fields and templates.
168+
/// When `true` this node will generate SQL with load query to JS side of Cube.
169+
/// It expects to be flattened: `from` is expected to be ungrouped CubeScan.
170+
/// There's no point in doing this for grouped CubeScan, we can just use load query from that CubeScan and SQL API generation on top.
171+
/// Load query generated for this case can be grouped when this node is an aggregation.
172+
/// Most fields will be rendered as a member expressions in generated load query.
173+
pub push_to_cube: bool,
166174
}
167175

168176
impl WrappedSelectNode {
@@ -183,7 +191,7 @@ impl WrappedSelectNode {
183191
order_expr: Vec<Expr>,
184192
alias: Option<String>,
185193
distinct: bool,
186-
ungrouped: bool,
194+
push_to_cube: bool,
187195
) -> Self {
188196
Self {
189197
schema,
@@ -202,7 +210,7 @@ impl WrappedSelectNode {
202210
order_expr,
203211
alias,
204212
distinct,
205-
ungrouped,
213+
push_to_cube,
206214
}
207215
}
208216
}
@@ -344,7 +352,7 @@ impl UserDefinedLogicalNode for WrappedSelectNode {
344352
order_expr,
345353
alias,
346354
self.distinct,
347-
self.ungrouped,
355+
self.push_to_cube,
348356
))
349357
}
350358
}

rust/cubesql/cubesql/src/compile/engine/df/wrapper.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,11 +518,11 @@ impl CubeScanWrapperNode {
518518
order_expr,
519519
alias,
520520
distinct,
521-
ungrouped,
521+
push_to_cube,
522522
}) = wrapped_select_node
523523
{
524524
// TODO support joins
525-
let ungrouped_scan_node = if ungrouped {
525+
let ungrouped_scan_node = if push_to_cube {
526526
if let LogicalPlan::Extension(Extension { node }) = from.as_ref() {
527527
if let Some(cube_scan_node) =
528528
node.as_any().downcast_ref::<CubeScanNode>()

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ use crate::{
2828
TimeDimensionName, TryCastExprDataType, UnionAlias, WindowFunctionExprFun,
2929
WindowFunctionExprWindowFrame, WrappedSelectAlias, WrappedSelectDistinct,
3030
WrappedSelectJoinJoinType, WrappedSelectLimit, WrappedSelectOffset,
31-
WrappedSelectSelectType, WrappedSelectType, WrappedSelectUngrouped,
31+
WrappedSelectPushToCube, WrappedSelectSelectType, WrappedSelectType,
3232
},
3333
CubeContext,
3434
},
@@ -2141,7 +2141,8 @@ impl LanguageToLogicalPlanConverter {
21412141
match_expr_list_node!(node_by_id, to_expr, params[12], WrappedSelectOrderExpr);
21422142
let alias = match_data_node!(node_by_id, params[13], WrappedSelectAlias);
21432143
let distinct = match_data_node!(node_by_id, params[14], WrappedSelectDistinct);
2144-
let ungrouped = match_data_node!(node_by_id, params[15], WrappedSelectUngrouped);
2144+
let push_to_cube =
2145+
match_data_node!(node_by_id, params[15], WrappedSelectPushToCube);
21452146

21462147
let filter_expr = normalize_cols(
21472148
replace_qualified_col_with_flat_name_if_missing(
@@ -2307,7 +2308,7 @@ impl LanguageToLogicalPlanConverter {
23072308
order_expr_rebased,
23082309
alias,
23092310
distinct,
2310-
ungrouped,
2311+
push_to_cube,
23112312
)),
23122313
})
23132314
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ crate::plan_to_language! {
282282
order_expr: Vec<Expr>,
283283
alias: Option<String>,
284284
distinct: bool,
285-
ungrouped: bool,
285+
push_to_cube: bool,
286286
ungrouped_scan: bool,
287287
},
288288
WrappedSelectJoin {
@@ -1385,7 +1385,7 @@ fn wrapped_select(
13851385
order_expr: impl Display,
13861386
alias: impl Display,
13871387
distinct: impl Display,
1388-
ungrouped: impl Display,
1388+
push_to_cube: impl Display,
13891389
ungrouped_scan: impl Display,
13901390
) -> String {
13911391
format!(
@@ -1405,7 +1405,7 @@ fn wrapped_select(
14051405
order_expr,
14061406
alias,
14071407
distinct,
1408-
ungrouped,
1408+
push_to_cube,
14091409
ungrouped_scan
14101410
)
14111411
}

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::{
1111
wrapped_select_projection_expr_empty_tail, wrapped_select_subqueries_empty_tail,
1212
wrapped_select_window_expr_empty_tail, wrapper_pullup_replacer, wrapper_pushdown_replacer,
1313
AggregateFunctionExprDistinct, AggregateFunctionExprFun, AliasExprAlias, ColumnExprColumn,
14-
ListType, LogicalPlanLanguage, WrappedSelectUngrouped, WrapperPullupReplacerAliasToCube,
14+
ListType, LogicalPlanLanguage, WrappedSelectPushToCube, WrapperPullupReplacerAliasToCube,
1515
WrapperPullupReplacerUngrouped,
1616
},
1717
transport::V1CubeMetaMeasureExt,
@@ -106,7 +106,7 @@ impl WrapperRules {
106106
),
107107
"WrappedSelectAlias:None",
108108
"WrappedSelectDistinct:false",
109-
"?select_ungrouped",
109+
"?select_push_to_cube",
110110
"WrappedSelectUngroupedScan:false",
111111
),
112112
"CubeScanWrapperFinalized:false",
@@ -115,7 +115,7 @@ impl WrapperRules {
115115
"?group_expr",
116116
"?aggr_expr",
117117
"?ungrouped",
118-
"?select_ungrouped",
118+
"?select_push_to_cube",
119119
),
120120
),
121121
transforming_rewrite(
@@ -331,7 +331,7 @@ impl WrapperRules {
331331
),
332332
"WrappedSelectAlias:None",
333333
"WrappedSelectDistinct:false",
334-
"?select_ungrouped",
334+
"?select_push_to_cube",
335335
"WrappedSelectUngroupedScan:false",
336336
),
337337
"CubeScanWrapperFinalized:false",
@@ -341,7 +341,7 @@ impl WrapperRules {
341341
"?group_expr",
342342
"?aggr_expr",
343343
"?ungrouped",
344-
"?select_ungrouped",
344+
"?select_push_to_cube",
345345
),
346346
)]);
347347
}
@@ -351,20 +351,20 @@ impl WrapperRules {
351351
group_expr_var: &'static str,
352352
aggr_expr_var: &'static str,
353353
ungrouped_var: &'static str,
354-
select_ungrouped_var: &'static str,
354+
select_push_to_cube_var: &'static str,
355355
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
356356
let group_expr_var = var!(group_expr_var);
357357
let aggr_expr_var = var!(aggr_expr_var);
358358
let ungrouped_var = var!(ungrouped_var);
359-
let select_ungrouped_var = var!(select_ungrouped_var);
359+
let select_push_to_cube_var = var!(select_push_to_cube_var);
360360
move |egraph, subst| {
361361
Self::transform_aggregate_impl(
362362
egraph,
363363
subst,
364364
group_expr_var,
365365
aggr_expr_var,
366366
ungrouped_var,
367-
select_ungrouped_var,
367+
select_push_to_cube_var,
368368
)
369369
}
370370
}
@@ -375,13 +375,13 @@ impl WrapperRules {
375375
group_expr_var: &'static str,
376376
aggr_expr_var: &'static str,
377377
ungrouped_var: &'static str,
378-
select_ungrouped_var: &'static str,
378+
select_push_to_cube_var: &'static str,
379379
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
380380
let alias_to_cube_var = var!(alias_to_cube_var);
381381
let group_expr_var = var!(group_expr_var);
382382
let aggr_expr_var = var!(aggr_expr_var);
383383
let ungrouped_var = var!(ungrouped_var);
384-
let select_ungrouped_var = var!(select_ungrouped_var);
384+
let select_push_to_cube_var = var!(select_push_to_cube_var);
385385
let meta = self.meta_context.clone();
386386
move |egraph, subst| {
387387
if Self::transform_check_subquery_allowed(
@@ -396,7 +396,7 @@ impl WrapperRules {
396396
group_expr_var,
397397
aggr_expr_var,
398398
ungrouped_var,
399-
select_ungrouped_var,
399+
select_push_to_cube_var,
400400
)
401401
} else {
402402
false
@@ -410,7 +410,7 @@ impl WrapperRules {
410410
group_expr_var: Var,
411411
aggr_expr_var: Var,
412412
ungrouped_var: Var,
413-
select_ungrouped_var: Var,
413+
select_push_to_cube_var: Var,
414414
) -> bool {
415415
if egraph[subst[group_expr_var]].data.referenced_expr.is_none() {
416416
return false;
@@ -422,9 +422,9 @@ impl WrapperRules {
422422
var_iter!(egraph[subst[ungrouped_var]], WrapperPullupReplacerUngrouped).cloned()
423423
{
424424
subst.insert(
425-
select_ungrouped_var,
426-
egraph.add(LogicalPlanLanguage::WrappedSelectUngrouped(
427-
WrappedSelectUngrouped(ungrouped),
425+
select_push_to_cube_var,
426+
egraph.add(LogicalPlanLanguage::WrappedSelectPushToCube(
427+
WrappedSelectPushToCube(ungrouped),
428428
)),
429429
);
430430
return true;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl WrapperRules {
2525
"?order_expr",
2626
"?select_alias",
2727
"?select_distinct",
28-
"WrappedSelectUngrouped:false",
28+
"WrappedSelectPushToCube:false",
2929
"?select_ungrouped_scan",
3030
),
3131
"?alias_to_cube",
@@ -53,7 +53,7 @@ impl WrapperRules {
5353
"?order_expr",
5454
"?select_alias",
5555
"WrappedSelectDistinct:true",
56-
"WrappedSelectUngrouped:false",
56+
"WrappedSelectPushToCube:false",
5757
"?select_ungrouped_scan",
5858
),
5959
"?alias_to_cube",

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

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::{
99
wrapped_select_joins_empty_tail, wrapped_select_order_expr_empty_tail,
1010
wrapped_select_projection_expr_empty_tail, wrapped_select_subqueries_empty_tail,
1111
wrapped_select_window_expr_empty_tail, wrapper_pullup_replacer, wrapper_pushdown_replacer,
12-
LogicalPlanLanguage, WrappedSelectUngrouped, WrappedSelectUngroupedScan,
12+
LogicalPlanLanguage, WrappedSelectPushToCube, WrappedSelectUngroupedScan,
1313
WrapperPullupReplacerUngrouped,
1414
},
1515
var, var_iter,
@@ -201,12 +201,16 @@ impl WrapperRules {
201201
),
202202
"WrappedSelectAlias:None",
203203
"WrappedSelectDistinct:false",
204-
"?select_ungrouped",
204+
"?select_push_to_cube",
205205
"?select_ungrouped_scan",
206206
),
207207
"CubeScanWrapperFinalized:false",
208208
),
209-
self.transform_filter("?ungrouped", "?select_ungrouped", "?select_ungrouped_scan"),
209+
self.transform_filter(
210+
"?ungrouped",
211+
"?select_push_to_cube",
212+
"?select_ungrouped_scan",
213+
),
210214
)]);
211215

212216
Self::list_pushdown_pullup_rules(
@@ -311,15 +315,15 @@ impl WrapperRules {
311315
),
312316
"WrappedSelectAlias:None",
313317
"WrappedSelectDistinct:false",
314-
"?select_ungrouped",
318+
"?select_push_to_cube",
315319
"?select_ungrouped_scan",
316320
),
317321
"CubeScanWrapperFinalized:false",
318322
),
319323
self.transform_filter_subquery(
320324
"?alias_to_cube",
321325
"?ungrouped",
322-
"?select_ungrouped",
326+
"?select_push_to_cube",
323327
"?select_ungrouped_scan",
324328
),
325329
)]);
@@ -328,18 +332,18 @@ impl WrapperRules {
328332
fn transform_filter(
329333
&self,
330334
ungrouped_var: &'static str,
331-
select_ungrouped_var: &'static str,
335+
select_push_to_cube_var: &'static str,
332336
select_ungrouped_scan_var: &'static str,
333337
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
334338
let ungrouped_var = var!(ungrouped_var);
335-
let select_ungrouped_var = var!(select_ungrouped_var);
339+
let select_push_to_cube_var = var!(select_push_to_cube_var);
336340
let select_ungrouped_scan_var = var!(select_ungrouped_scan_var);
337341
move |egraph, subst| {
338342
Self::transform_filter_impl(
339343
egraph,
340344
subst,
341345
ungrouped_var,
342-
select_ungrouped_var,
346+
select_push_to_cube_var,
343347
select_ungrouped_scan_var,
344348
)
345349
}
@@ -349,12 +353,12 @@ impl WrapperRules {
349353
&self,
350354
alias_to_cube_var: &'static str,
351355
ungrouped_var: &'static str,
352-
select_ungrouped_var: &'static str,
356+
select_push_to_cube_var: &'static str,
353357
select_ungrouped_scan_var: &'static str,
354358
) -> impl Fn(&mut CubeEGraph, &mut Subst) -> bool {
355359
let alias_to_cube_var = var!(alias_to_cube_var);
356360
let ungrouped_var = var!(ungrouped_var);
357-
let select_ungrouped_var = var!(select_ungrouped_var);
361+
let select_push_to_cube_var = var!(select_push_to_cube_var);
358362
let select_ungrouped_scan_var = var!(select_ungrouped_scan_var);
359363
let meta = self.meta_context.clone();
360364
move |egraph, subst| {
@@ -368,7 +372,7 @@ impl WrapperRules {
368372
egraph,
369373
subst,
370374
ungrouped_var,
371-
select_ungrouped_var,
375+
select_push_to_cube_var,
372376
select_ungrouped_scan_var,
373377
)
374378
} else {
@@ -381,16 +385,16 @@ impl WrapperRules {
381385
egraph: &mut CubeEGraph,
382386
subst: &mut Subst,
383387
ungrouped_var: Var,
384-
select_ungrouped_var: Var,
388+
select_push_to_cube_var: Var,
385389
select_ungrouped_scan_var: Var,
386390
) -> bool {
387391
for ungrouped in
388392
var_iter!(egraph[subst[ungrouped_var]], WrapperPullupReplacerUngrouped).cloned()
389393
{
390394
subst.insert(
391-
select_ungrouped_var,
392-
egraph.add(LogicalPlanLanguage::WrappedSelectUngrouped(
393-
WrappedSelectUngrouped(ungrouped),
395+
select_push_to_cube_var,
396+
egraph.add(LogicalPlanLanguage::WrappedSelectPushToCube(
397+
WrappedSelectPushToCube(ungrouped),
394398
)),
395399
);
396400

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl WrapperRules {
3535
"?order_expr",
3636
"?select_alias",
3737
"?select_distinct",
38-
"?select_ungrouped",
38+
"?select_push_to_cube",
3939
"?select_ungrouped_scan",
4040
),
4141
"?alias_to_cube",
@@ -64,7 +64,7 @@ impl WrapperRules {
6464
"?order_expr",
6565
"?select_alias",
6666
"?select_distinct",
67-
"?select_ungrouped",
67+
"?select_push_to_cube",
6868
"?select_ungrouped_scan",
6969
),
7070
"?alias_to_cube",

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl WrapperRules {
2828
wrapped_select_order_expr_empty_tail(),
2929
"?select_alias",
3030
"?select_distinct",
31-
"?select_ungrouped",
31+
"?select_push_to_cube",
3232
"?select_ungrouped_scan",
3333
),
3434
"?alias_to_cube",
@@ -104,7 +104,7 @@ impl WrapperRules {
104104
),
105105
"?select_alias",
106106
"?select_distinct",
107-
"?select_ungrouped",
107+
"?select_push_to_cube",
108108
"?select_ungrouped_scan",
109109
),
110110
"CubeScanWrapperFinalized:false",

0 commit comments

Comments
 (0)