Omkar-Wagholikar opened a new pull request, #27029:
URL: https://github.com/apache/datafusion/pull/27029

   
   ## Which issue does this PR close?
   
   - Closes #26756.
   
   ## Rationale for this change
   
   I found some parts of the code that deep-clone owned data then immediately 
discard the original. 
   Each of these copies does real work. 
   This PR moves the values instead where the original isn't used afterwards. 
The code is no more complicated than before. As discussed on the issue, the aim 
is cleaner code. I haven't measured a speedup (sql_planner shows no difference 
outside noise).
   
   ## What changes are included in this PR?
   
   - exclude_using_columns (datafusion/expr/src/utils.rs): DFSchema::columns() 
already returns an owned Vec<Column>, so it is now collected with into_iter() 
and each Column is no longer cloned a second time.
   - TypeCoercion::coerce_dml 
(datafusion/optimizer/src/analyzer/type_coercion.rs): the MergeIntoOp is edited 
in place through &mut dml.op instead of being deep-cloned and rebuilt. 
std::mem::take replaces value.clone() before cast_to.
   - Between rewrite and as_inlist 
(datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs): 
boxed.as_ref().clone() replaces *boxed.clone(), which allocates a Box only to 
unwrap it.
   
   I have also checked this against #17675 (LogicalPlanBuilder taking 
Arc<LogicalPlan>) and found no overlap. type_coercion.rs is the only shared 
file and even then the touched functions are different.
   
   
   ## What is the testing strategy for this PR?
   
   No new tests, since the behavior is unchanged and existing tests cover these 
paths:
   - cargo test -p datafusion-expr -p datafusion-optimizer, including the unit 
tests for the simplifier and type coercion.
   - The merge_into.slt sqllogictest, which exercises coerce_dml.
   - The full sqllogictest suite and core_integration (1,426 tests) also pass 
locally.
   
   ## Are there any user-facing changes?
   
   No. This is a behavior-preserving refactor with no public API changes.
   


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

Reply via email to