blaginin commented on code in PR #14684:
URL: https://github.com/apache/datafusion/pull/14684#discussion_r2121659097


##########
datafusion/core/src/dataframe/mod.rs:
##########
@@ -1972,41 +1972,85 @@ impl DataFrame {
             .config_options()
             .sql_parser
             .enable_ident_normalization;
+
         let old_column: Column = if ident_opts {
             Column::from_qualified_name(old_name)
         } else {
             Column::from_qualified_name_ignore_case(old_name)
         };
 
-        let (qualifier_rename, field_rename) =
-            match self.plan.schema().qualified_field_from_column(&old_column) {
-                Ok(qualifier_and_field) => qualifier_and_field,
-                // no-op if field not found
-                Err(DataFusionError::SchemaError(
-                    SchemaError::FieldNotFound { .. },
-                    _,
-                )) => return Ok(self),
-                Err(err) => return Err(err),
-            };
-        let projection = self
-            .plan
-            .schema()
-            .iter()
-            .map(|(qualifier, field)| {
-                if qualifier.eq(&qualifier_rename) && field.as_ref() == 
field_rename {
-                    (
-                        col(Column::from((qualifier, field)))
-                            .alias_qualified(qualifier.cloned(), new_name),
-                        false,
-                    )
-                } else {
-                    (col(Column::from((qualifier, field))), false)
-                }
-            })
-            .collect::<Vec<_>>();
-        let project_plan = LogicalPlanBuilder::from(self.plan)
-            .project_with_validation(projection)?
-            .build()?;
+        let project_plan = if let LogicalPlan::Projection(Projection {

Review Comment:
   It is indeed removed at the optimisation step! The idea behind that PR was 
that sometimes you might want to call functions involving expr tree traversal 
before performing optimisations. For example:
   
   1. Create a df  
   2. Rename a lot of columns  
   3. Call something like `replace_params_with_values` ← than, it'll iterate 
over a lot of projection layers
   
   However, after revisiting the PR half a year later 😁, I feel like:
   - this isn't actually a problem (spent 30 mins and couldn't easily reproduce 
the problem)
   - it's very niche
   - it does make the code more complicated
   
   So I'll close the PR for now, but will keep an eye on related issues and 
resubmit if it turns out to be a real problem.



-- 
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: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to