@@ -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