You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c5914d7
Browse filesBrowse the repository at this point in the historyBrowse files
lgj-abi minor 12: the grouped sum that never builds a selection
`lgj_plan_group_sum_i32` lowers the fused plan and `GROUP BY key SUM(val)`
as ONE mask-risc program (`plan_lower::lower_group_sum`, the same prefix
rewrite and survivor skip as `plan_eval`, ending in `Terminal::GroupSumI32`
over the accumulator instead of `Keep`). The executor runs it tile by tile;
the only state sized by the answer is the caller's `i64` buffer, one per
group, and that is all that crosses back. Java's `View.sumByGroup` is
therefore one crossing for 16 groups at any row count, where the path it
replaces (plan_eval into a mask, then reduce per group) measured 32.
`via_res`/`via_lane` give the fk-keyed form: the group of a row is the
second table's `u32` lane read through this table's key lane, fused inside
`Terminal::GroupSumViaI32` — no partner-side mask, no remapped key lane.
`View.sumByGroupVia` is the Java spelling, still one crossing.
An empty plan is legal here (there is no destination mask a caller could
fill itself) and lowers to the whole-lane `Pred::Range { 0, n_rows }` — the
one Range this crate emits, pinned to be that range and nothing else so
`exec_error_to_status`'s RangeOutOfBounds arm stays an internal-bug mapping.
Native: 191 tests (8 new: two-crossing-path parity over the combine sweep
on single- and multi-tile populations, empty/all-OR plans against a hand
walk, n_groups as a sink bound, tiled executor vs scalar reference on both
key shapes, the fk-keyed form against a hand-walked join with zero-fallback
drops, every refusal leaving out_sums untouched, and a quack-lowering
convergence arm with Agg::GroupSumI32). Clippy -D warnings and fmt clean.
Java (JDK 28, --enable-preview): 612 checks (409 + GroupSumTest 203):
parity against per-group sumOf, one-crossing cost measured beside the
32-crossing path, the keyed form against an oracle that reads the second
resource's keys through the one named materialiser, argument checks before
any crossing. Minor12 lazy holder, requireMinor(12), an OldAbiCompatTest
gate, and the DoctrineFenceTest pin for the eighth named materialisation
site (Engine.groupSumI32's toArray, sized by groups, never rows).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GXUahz73MZxtxWcfpHp9dG
0 commit comments