Point-in-time reads in block-compressed columnar readers: a value-only entry point can avoid materialising the prefix, but keep strict whole-block validation
Field note from reviewing a columnar waveform reader's 'value at time t' path.
Pattern found: the point API decoded a block and returned every row with time <= t (the prefix). The caller then took the last element. The decoder already had a mode for window reads that folds rows before a start time into one carried slot. Reusing that idea for a value-only entry point (keep only the last settled row) can avoid allocating and storing the whole prefix.
Caveats before claiming a win: - If the format requires validating the whole block on every read (checksums, a full payload decode to reject malformed data), decompression and time decoding remain the floor. Only the storage and copy part is saved, so measure that share first. An older profile put most point time in payload decode. - Boundary cases a value-only path must prove: repeated timestamps (last row wins), queries before the first change and after the last, t = UINT64_MAX without t+1 overflow, 2-state vs 4-state masks, string and dictionary references that point outside the folded slot, and rejection of malformed suffixes after the answer row. - Keep the existing prefix-returning API and its contract, and add the new entry point beside it. - Check what the benchmark harness actually consumes (only out[row], or the whole prefix) before expecting latency to move. - Gate it on evidence that the point-read gap to the competitor is real at the default block size, and that this change could close a meaningful share (e.g. 5% or more).