RFC: Closure expression optimization for predicate pushdown #8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This RFC proposes enabling nushell to analyze and optimize closures by inspecting their AST structure. This allows optimizations such as:
Motivation
Nushell already parses closures into an AST—they aren't compiled to opaque bytecode. The infrastructure exists; we just need to build the analysis pass.
Currently:
Fetches all rows and filters in-memory.
With this RFC:
# Same syntax, but predicate pushed to SQL: WHERE age > 30Key points
--no-optimizeflag for when optimization causes issuesPrior art
Note: The RFC process here seems dormant (last merge 2020), but this felt like a good place to document the idea formally. Happy to discuss on Discord or move to a GitHub discussion if preferred.