timely-util: vendor ColumnationStack and merge batcher from differential-dataflow#35760
Merged
antiguru merged 8 commits intoMaterializeInc:mainfrom Apr 8, 2026
Merged
timely-util: vendor ColumnationStack and merge batcher from differential-dataflow#35760antiguru merged 8 commits intoMaterializeInc:mainfrom
antiguru merged 8 commits intoMaterializeInc:mainfrom
Conversation
Contributor
|
Thanks for opening this PR! Here are a few tips to help make the review process smooth for everyone. PR title guidelines
Pre-merge checklist
|
feb6caf to
396825b
Compare
Contributor
|
Fwiw, excited to see this popped out of DD and moved over here. :D |
2d76d93 to
f1c9497
Compare
frankmcsherry
approved these changes
Apr 8, 2026
Contributor
frankmcsherry
left a comment
There was a problem hiding this comment.
This is very clear, and imo the right thing to do.
teskje
approved these changes
Apr 8, 2026
5f10f51 to
b401d37
Compare
Copy TimelyStack from differential-dataflow, renamed to ColumnationStack. Also vendors ColumnationChunker, the InternalMerge impl for columnation stacks, and the ColInternalMerger type alias. This prepares for removing columnation support from differential-dataflow. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Also adds BatchContainer and BuilderInput impls for ColumnationStack in mz-timely-util, which are needed by differential-dataflow's Layout and Builder traits. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Update expected type names in relations.slt from differential_dataflow::containers::TimelyStack to mz_timely_util::columnation::ColumnationStack. Add clippy disallowed-types entry for TimelyStack to prevent accidental use of the DD type instead of our vendored copy. Fix doctest type inference failure caused by new DrainContainer impl. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Move crate::columnation import after external crate imports in columnar.rs. Add safety justification to unsafe block in ColumnationStack::retain_from. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
DD 0.22 added a position parameter to InternalMerge::extract with per-item capacity checks, fixing the sizing bug. Use DD's InternalMerger directly instead of a custom ColumnationMerger. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Signed-off-by: Moritz Hoffmann <[email protected]>
93af8c6 to
324aa43
Compare
mgree
pushed a commit
to mgree/materialize
that referenced
this pull request
Apr 13, 2026
…ial-dataflow (MaterializeInc#35760) ## Summary - Vendors `TimelyStack` from differential-dataflow into `mz-timely-util` as `ColumnationStack`, along with `ColumnationChunker`, `BatchContainer`/`BuilderInput`/`InternalMerge` impls, and a new `ColumnationMerger` that directly implements the `Merger` trait. - `ColumnationMerger` replaces DD's generic `InternalMerger<MC>` with a direct `Merger` impl for `ColumnationStack` that performs per-item merge and extract with capacity checks. - Updates all consumers across `mz-compute`, `mz-storage`, `mz-storage-operators`, and `mz-storage-types` to import from `mz_timely_util::columnation` instead of `differential_dataflow::containers`. - Adds a clippy `disallowed-types` entry for `TimelyStack` to prevent accidental use of the DD type. This prepares for removing columnation support from differential-dataflow. The `Batcher`, `Merger`, and `InternalMerge` traits remain in DD — only the columnation-specific implementations and container types are vendored. ## Test plan - [x] `cargo check --all-targets` passes - [x] `cargo test -p mz-timely-util --lib` passes - [x] `cargo test -p mz-storage-types` passes - [ ] CI 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: Moritz Hoffmann <[email protected]> Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
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.
Summary
TimelyStackfrom differential-dataflow intomz-timely-utilasColumnationStack, along withColumnationChunker,BatchContainer/BuilderInput/InternalMergeimpls, and a newColumnationMergerthat directly implements theMergertrait.ColumnationMergerreplaces DD's genericInternalMerger<MC>with a directMergerimpl forColumnationStackthat performs per-item merge and extract with capacity checks.mz-compute,mz-storage,mz-storage-operators, andmz-storage-typesto import frommz_timely_util::columnationinstead ofdifferential_dataflow::containers.disallowed-typesentry forTimelyStackto prevent accidental use of the DD type.This prepares for removing columnation support from differential-dataflow. The
Batcher,Merger, andInternalMergetraits remain in DD — only the columnation-specific implementations and container types are vendored.Test plan
cargo check --all-targetspassescargo test -p mz-timely-util --libpassescargo test -p mz-storage-typespasses🤖 Generated with Claude Code