Skip to content

Commit 1b3a2cb

Browse files
committed
chore: improve grouping_set_normalize
1 parent c738596 commit 1b3a2cb

File tree

1 file changed

+33
-22
lines changed

1 file changed

+33
-22
lines changed

rust/cubesql/cubesql/src/compile/engine/df/optimizers/plan_normalize.rs

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,16 +1040,13 @@ fn expr_normalize(
10401040

10411041
e @ Expr::QualifiedWildcard { .. } => Ok(Box::new(e.clone())),
10421042

1043-
Expr::GroupingSet(grouping_set) => {
1044-
let grouping_set = grouping_set_normalize(
1045-
optimizer,
1046-
grouping_set,
1047-
schema,
1048-
remapped_columns,
1049-
optimizer_config,
1050-
)?;
1051-
Ok(Box::new(Expr::GroupingSet(grouping_set)))
1052-
}
1043+
Expr::GroupingSet(grouping_set) => grouping_set_normalize(
1044+
optimizer,
1045+
grouping_set,
1046+
schema,
1047+
remapped_columns,
1048+
optimizer_config,
1049+
),
10531050
}
10541051
}
10551052

@@ -1112,50 +1109,64 @@ fn grouping_set_normalize(
11121109
schema: &DFSchema,
11131110
remapped_columns: &HashMap<Column, Column>,
11141111
optimizer_config: &OptimizerConfig,
1115-
) -> Result<GroupingSet> {
1112+
) -> Result<Box<Expr>> {
11161113
match grouping_set {
11171114
GroupingSet::Rollup(exprs) => {
11181115
let exprs = exprs
11191116
.iter()
11201117
.map(|expr| {
1121-
expr_normalize(optimizer, expr, schema, remapped_columns, optimizer_config)
1118+
expr_normalize_stacked(
1119+
optimizer,
1120+
expr,
1121+
schema,
1122+
remapped_columns,
1123+
optimizer_config,
1124+
)
11221125
})
11231126
.collect::<Result<Vec<_>>>()?;
1124-
Ok(GroupingSet::Rollup(exprs.into_iter().map(|e| *e).collect()))
1127+
1128+
Ok(Box::new(Expr::GroupingSet(GroupingSet::Rollup(exprs))))
11251129
}
11261130

11271131
GroupingSet::Cube(exprs) => {
11281132
let exprs = exprs
11291133
.iter()
11301134
.map(|expr| {
1131-
expr_normalize(optimizer, expr, schema, remapped_columns, optimizer_config)
1135+
expr_normalize_stacked(
1136+
optimizer,
1137+
expr,
1138+
schema,
1139+
remapped_columns,
1140+
optimizer_config,
1141+
)
11321142
})
11331143
.collect::<Result<Vec<_>>>()?;
1134-
Ok(GroupingSet::Cube(exprs.into_iter().map(|e| *e).collect()))
1144+
1145+
Ok(Box::new(Expr::GroupingSet(GroupingSet::Cube(exprs))))
11351146
}
11361147

11371148
GroupingSet::GroupingSets(exprs) => {
11381149
let exprs = exprs
11391150
.iter()
11401151
.map(|exprs| {
1141-
Ok(exprs
1152+
exprs
11421153
.iter()
11431154
.map(|expr| {
1144-
expr_normalize(
1155+
expr_normalize_stacked(
11451156
optimizer,
11461157
expr,
11471158
schema,
11481159
remapped_columns,
11491160
optimizer_config,
11501161
)
11511162
})
1152-
.collect::<Result<Vec<_>>>()?
1153-
.into_iter()
1154-
.map(|e| *e)
1155-
.collect())
1163+
.collect::<Result<Vec<_>>>()
11561164
})
11571165
.collect::<Result<Vec<_>>>()?;
1158-
Ok(GroupingSet::GroupingSets(exprs))
1166+
1167+
Ok(Box::new(Expr::GroupingSet(GroupingSet::GroupingSets(
1168+
exprs,
1169+
))))
11591170
}
11601171
}
11611172
}

0 commit comments

Comments
 (0)