parquet_columns_validity Submodule

Kind-dispatched validity for parquet_column (RF8).

Validity is deliberately NOT uniform across kinds, and this submodule is the single place that knows the difference:

kind                          null state lives in            any_null() answers via
int32/int64/f32/f64/logical   the column's own bitmap        bitmap scan (O(blocks))
  and their *_VEC forms       one bit per ELEMENT            (nrows*width bits)
string (+ PK_STRING_VEC)      the embedded string column     its own null_count() > 0
date/time/timestamp (+ _VEC)  inside each element            cached flag, rescanned when dirty
list/map/struct (reserved)    the container column           delegated (not yet implemented)

Hoisting everything into the column bitmap was rejected: it would mean two sources of truth kept in sync by every mutation path, and for the temporal kinds it would fight parquet_temporal's deliberate decision that those three types carry their own null state.

The bitmap is sparse (R2): a null-free column allocates nothing at all. It appears on the first set_null/append_nulls and is dropped again by a whole-column set_all or an explicit compact_validity.


Uses