goldmedal commented on code in PR #11681:
URL: https://github.com/apache/datafusion/pull/11681#discussion_r1714170325
##########
datafusion/sql/src/select.rs:
##########
@@ -637,40 +616,49 @@ impl<'a, S: ContextProvider> SqlToRel<'a, S> {
}
/// If there is a REPLACE statement in the projected expression in the
form of
- /// "REPLACE (some_column_within_an_expr AS some_column)", this function
replaces
- /// that column with the given replace expression. Column name remains the
same.
- /// Multiple REPLACEs are also possible with comma separations.
- fn replace_columns(
+ /// "REPLACE (some_column_within_an_expr AS some_column)", we should plan
the
+ /// replace expressions first.
+ fn plan_wildcard_options(
&self,
plan: &LogicalPlan,
empty_from: bool,
planner_context: &mut PlannerContext,
- mut exprs: Vec<Expr>,
- replace: ReplaceSelectItem,
- ) -> Result<Vec<Expr>> {
- for expr in exprs.iter_mut() {
- if let Expr::Column(Column { name, .. }) = expr {
- if let Some(item) = replace
- .items
- .iter()
- .find(|item| item.column_name.value == *name)
- {
- let new_expr = self.sql_select_to_rex(
+ options: WildcardAdditionalOptions,
+ ) -> Result<WildcardOptions> {
+ if let Some(replace) = options.opt_replace {
+ let replace_expr = replace
+ .items
+ .iter()
+ .map(|item| {
+ Ok(self.sql_select_to_rex(
Review Comment:
We need to plan the expression of `replace` first and then expand them in
the `ExpandWildcardRule`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]