…te/VariantParse/RowStoreFill at the segment_creator seams
Third PR of the apache#64674 split stack (apache#65492, apache#66151). Adds
storage/transform/block_transform.{h,cpp}: an immutable BlockTransformChain
applied to every flushed block at the two segment_creator seams before the
block reaches a segment writer.
- ValidateStage: the schema/width checks both writers duplicated.
- VariantParseStage: the non-partial-update variant parse both writers called.
- RowStoreFillStage: registers a RowStoreColumnGenerator over a COW snapshot
taken before variant parse, so the row-store column is still built from the
raw variant representation. The vertical writer pumps it in bounded batches
(_append_generated_column, 4MB / num_rows_per_block caps); the horizontal
writer materializes it up front.
Bridges removed by later PRs of the stack: binlog sub-writers get an empty
chain (RowBinlogSegmentWriter still derives rows itself); partial update
loads get [Validate] only (the writers still own the PU fill/parse/row-store
work). Every block goes through exactly one of chain-or-writer per transform.
New guards on previously crashing paths: PU without tablet context ->
NotSupported; PU flushed through add_block (no segment id) -> InternalError.
add_block never carries PU loads (callers: push handler, merger, schema
change).
Equivalence pinned by the golden segment-format tests (apache#65977):
RowStoreAndSegmentCreatorPathsKeepTheirSegmentBytes and
PartialUpdateAndRowBinlogPathsKeepTheirSegmentBytes cover the touched paths.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Third PR of the #64674 split stack (#65492, #66151). Adds storage/transform/block_transform.{h,cpp}: an immutable BlockTransformChain applied to every flushed block at the two segment_creator seams before the block reaches a segment writer.
What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
Release note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)