Latest Results
Push expressions through plan operators
Add the four parent-reduction rules that push an `Eval` into the operator
below it, and drive them from a top-down optimizer:
Eval x Concat push into every chunk, unless the expression reads
row indices, which are relative to the whole domain
Eval x Take evaluate over dictionary values instead of codes, only
when the expression is strict, infallible, and boolean
Eval x Pack partition per field, push each partition into its field,
and prune fields the expression never reads
Eval x RowIdx partition between generated row indices and the data
child, evaluating each independently
Two operators support the row-index rule: `RowIdxValues` generates global
row indices over a domain, and `RowIdxPartition` pairs an independently
evaluated row-index branch with a data branch.
The optimizer becomes top-down, driven from `Eval` nodes. A rewrite can
leave a residual expression above the same operator kind, so the driver
tracks the child it just reduced and does not immediately re-fire the same
rule on that residual. This replaces the bottom-up rewriter, whose two
rules (identity elimination and expression fusion) are subsumed by it.
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012obBhJ8oPZoBbKyeS79yMv
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Latest Branches
+7%
rk/varbinview-gather-scatter ×4.1
adamg/bench-optimization-experiment +83%
claude/collapse-checked-arith-macros © 2026 CodSpeed Technology