diff --git a/datafusion/expr/src/expr.rs b/datafusion/expr/src/expr.rs index df79b3568ce6..5e769ffd8751 100644 --- a/datafusion/expr/src/expr.rs +++ b/datafusion/expr/src/expr.rs @@ -1276,7 +1276,7 @@ impl Expr { /// Return `self AS name` alias expression pub fn alias(self, name: impl Into) -> Expr { - Expr::Alias(Alias::new(self, None::<&str>, name.into())) + Expr::Alias(Alias::new(self.unalias(), None::, name)) } /// Return `self AS name` alias expression with a specific qualifier @@ -1285,7 +1285,7 @@ impl Expr { relation: Option>, name: impl Into, ) -> Expr { - Expr::Alias(Alias::new(self, relation, name.into())) + Expr::Alias(Alias::new(self.unalias(), relation, name)) } /// Remove an alias from an expression if one exists. diff --git a/datafusion/optimizer/src/analyzer/type_coercion.rs b/datafusion/optimizer/src/analyzer/type_coercion.rs index d1d491cc7a64..8df480873383 100644 --- a/datafusion/optimizer/src/analyzer/type_coercion.rs +++ b/datafusion/optimizer/src/analyzer/type_coercion.rs @@ -1013,7 +1013,7 @@ fn project_with_column_index( .enumerate() .map(|(i, e)| match e { Expr::Alias(Alias { ref name, .. }) if name != schema.field(i).name() => { - Ok(e.unalias().alias(schema.field(i).name())) + Ok(e.alias(schema.field(i).name())) } Expr::Column(Column { relation: _,