crepererum opened a new pull request, #6348:
URL: https://github.com/apache/arrow-datafusion/pull/6348

   # Which issue does this PR close?
   Fixes #6277.
   
   # Rationale for this change
   Having a single method w/ all optimization algorithms lets rustc+LLVM pick 
the largest possible stack size over all branches when compiled under the `dev` 
profile (e.g. for tests). So even if there's a deeply nested projection (e.g. 
for `tpcds_logical_q64`), we pay for the more complex aggregation optimization 
with every recursion.
   
   Splitting the method into sub-methods seems to fix this.
   
   # What changes are included in this PR?
   Just moving code around, no functional change.
   
   # Are these changes tested?
   Manually w/:
   
   ```bash
   #!/usr/bin/env bash
   
   pushd datafusion/core
   
   export RUST_MIN_STACK=1800000
   exec "$@"
   ```
   
   and
   
   ```console
   $ cargo with './exec.sh {bin} {args}' -- test -p datafusion --test 
tpcds_planning -- tpcds_logical_q64 --nocapture
   ```
   
   # Are there any user-facing changes?
   Less stack usage.


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

Reply via email to