Skip to content

Commit 471c6cc

Browse files
committed
refactor(cubesql): Extract remap_column_expression function
1 parent 108eea6 commit 471c6cc

File tree

1 file changed

+31
-13
lines changed
  • rust/cubesql/cubesql/src/compile/engine/df

1 file changed

+31
-13
lines changed

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

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,6 +1574,30 @@ impl CubeScanWrapperNode {
15741574
})
15751575
}
15761576

1577+
fn remap_column_expression(
1578+
schema: &DFSchema,
1579+
original_expr: &Expr,
1580+
column_remapping: Option<&ColumnRemapping>,
1581+
next_remapper: &mut Remapper,
1582+
can_rename_columns: bool,
1583+
) -> result::Result<(Expr, String), CubeError> {
1584+
let expr = if let Some(column_remapping) = column_remapping {
1585+
let mut expr = column_remapping.remap(original_expr)?;
1586+
if !can_rename_columns {
1587+
let original_alias = expr_name(original_expr, &schema)?;
1588+
if original_alias != expr_name(&expr, &schema)? {
1589+
expr = Expr::Alias(Box::new(expr), original_alias.clone());
1590+
}
1591+
}
1592+
expr
1593+
} else {
1594+
original_expr.clone()
1595+
};
1596+
let alias = next_remapper.add_expr(&schema, original_expr, &expr)?;
1597+
1598+
Ok((expr, alias))
1599+
}
1600+
15771601
async fn generate_column_expr(
15781602
schema: DFSchemaRef,
15791603
exprs: impl IntoIterator<Item = Expr>,
@@ -1587,18 +1611,13 @@ impl CubeScanWrapperNode {
15871611
) -> result::Result<(Vec<(AliasedColumn, HashSet<String>)>, SqlQuery), CubeError> {
15881612
let mut aliased_columns = Vec::new();
15891613
for original_expr in exprs {
1590-
let expr = if let Some(column_remapping) = column_remapping {
1591-
let mut expr = column_remapping.remap(&original_expr)?;
1592-
if !can_rename_columns {
1593-
let original_alias = expr_name(&original_expr, &schema)?;
1594-
if original_alias != expr_name(&expr, &schema)? {
1595-
expr = Expr::Alias(Box::new(expr), original_alias.clone());
1596-
}
1597-
}
1598-
expr
1599-
} else {
1600-
original_expr.clone()
1601-
};
1614+
let (expr, alias) = Self::remap_column_expression(
1615+
schema.as_ref(),
1616+
&original_expr,
1617+
column_remapping,
1618+
next_remapper,
1619+
can_rename_columns,
1620+
)?;
16021621

16031622
let mut used_members = HashSet::new();
16041623
let (expr_sql, new_sql_query) = Self::generate_sql_for_expr(
@@ -1614,7 +1633,6 @@ impl CubeScanWrapperNode {
16141633
Self::escape_interpolation_quotes(expr_sql, push_to_cube_context.is_some());
16151634
sql = new_sql_query;
16161635

1617-
let alias = next_remapper.add_expr(&schema, &original_expr, &expr)?;
16181636
aliased_columns.push((
16191637
AliasedColumn {
16201638
expr: expr_sql,

0 commit comments

Comments
 (0)