compute: columnar linear-join input (C4)#37752
Draft
antiguru wants to merge 1 commit into
Draft
Conversation
Rework the linear-join source-key path to consume its input as a `CollectionEdge` rather than decoding to `Vec` via `as_specific_collection`. The `JoinedFlavor::Collection` variant now carries an edge, and the source arrangement key is formed off it. Pattern: C1-reuse (borrowed-push, zero-alloc), not the C3 fallback. The join's source arrange already builds a `ColumnBuilder<((Row,Row),T,Diff)>` and arranges via the `Col2Val` batcher family, so the keying operator pushes the key and value borrowed with no owned `Row` per record. The keying-plus-arrange step is factored into a new free fn `arrange_join_input` with a `Vec` arm (behaviorally identical to before, same operator names) and a columnar arm reading via `into_index_iter`, owning time and diff only on the error path. The no-source-key path reads `input.collection` directly. The source-key path still reads from an existing arrangement (already columnar internally) and wraps its decoded rows as a `Vec` edge. Stage outputs and the final join output stay `Vec` (the join output producer is a later migration node); `into_vec` is the identity on the `Vec` arm, so Wave 1 is unchanged and the columnar arm is dead in production. Adds `arrange_join_input_arms_agree` (cross-arm agreement across several timestamps plus a retraction) and `arrange_join_input_arms_agree_on_error_path` (a fallible key drives every record onto the `try_extend` Err branch, covering the columnar arm's `Columnar::into_owned` for time and diff and asserting both arms produce identical errors). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
antiguru
force-pushed
the
columnar-c4-linear-join-input
branch
from
July 20, 2026 16:06
a31c0c4 to
69046c7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Remove these sections if your commit already has a good description!
Motivation
Why does this change exist? Link to a GitHub issue, design doc, Slack
thread, or explain the problem in a sentence or two. A reviewer who has
no context should understand why after reading this section.
If this implements or addresses an existing issue, it's enough to link to that:
Closes
Fixes
etc.
Description
What does this PR actually do? Focus on the approach and any non-obvious
decisions. The diff shows the code --- use this space to explain what the
diff can't tell a reviewer.
Verification
How do you know this change is correct? Describe new or existing automated
tests, or manual steps you took.