Returns null when the current row already contains this column. The first value wins, matching the existing Sender API.
Closes the current row and back-fills missing columns with nulls.
Truncates every column back to the last completed row.
Values are truncated to the committed watermark rather than popped once per non-null marker, because getOrCreateColumn() reserves the current cell as non-null before the caller appends its value. A setter that threw in between -- a geohash precision mismatch, an invalid decimal scale -- left a reserved marker with no value behind it, and popping per marker then deleted the previous completed row's value instead. The table kept that row's non-null marker, so encodeQwpIngressFrame() rejected the whole buffer with a value/marker count mismatch.
Copies a completed half-open row range into an independent table buffer. Compact column values and their null bitmaps are sliced together, so the result can be encoded without materialising rows first.
Mutable columnar staging area for one QWP ingress table.