Skip to content

compute: columnar arrange input (C1)#37745

Closed
antiguru wants to merge 1 commit into
MaterializeInc:mainfrom
antiguru:moritz/columnar-c1
Closed

compute: columnar arrange input (C1)#37745
antiguru wants to merge 1 commit into
MaterializeInc:mainfrom
antiguru:moritz/columnar-c1

Conversation

@antiguru

Copy link
Copy Markdown
Member

Root of the C1 stack for the columnar dataflow edge migration (design doc in #37744).

Generalize ensure_collections and arrange_collection to accept a CollectionEdge instead of a VecCollection. The columnar arm forms the arrangement key directly off the borrowed column via into_index_iter, mirroring the flat_map_datums pattern, and never materializes an owned Row. The Vec arm is byte-identical to before, and the passthrough output preserves the input variant.

Temporal bucketing (node C8) still consumes and produces a Vec edge, so the into_vec decode moves into that branch as the sanctioned leaf seam until C8 makes bucketing columnar-native.

Producers still emit Vec in Wave 1, so the columnar arm is dead in production: this makes the consumer ready without any runtime behavior change. No producer is flipped here.

Adds a cross-arm agreement unit test that arranges the same input as both a Vec and a columnar edge, asserts identical arranged results, and asserts the columnar arm keeps the columnar passthrough variant (proving no ColumnarToVec decode on the path).

Generalize `ensure_collections` and `arrange_collection` to accept a
`CollectionEdge` instead of a `VecCollection`, so the arrange input path
no longer decodes a columnar edge through `ColumnarToVec`.

The columnar arm forms the arrangement key by iterating the borrowed
column with `into_index_iter`, mirroring the proven `flat_map_datums`
pattern, and never materializes an owned `Row`. The Vec arm is unchanged.
The passthrough output preserves the input variant. Temporal bucketing
(node C8) still consumes and produces a `Vec` edge, so the decode moves
into that branch as a sanctioned leaf seam.

Producers still emit `Vec`, so the columnar arm is dead in production and
this change carries no runtime behavior change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@antiguru
antiguru force-pushed the moritz/columnar-c1 branch from 76a0d9b to d04828f Compare July 20, 2026 12:32
@antiguru

Copy link
Copy Markdown
Member Author

Superseded by a same-repo stacked-PR chain on upstream (columnar edge migration C1 -> C3). Reopening the cross-fork PR is unnecessary; the same-repo stack replaces it.

@antiguru antiguru closed this Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant