parquet_columns_structural Submodule

Lifecycle and structural mutation for parquet_column: init, clear, deep_copy, the unit accessors, and the four row-set operations append, append_nulls, delete_by_mask and reindex.

Every procedure here is written once, kind-agnostically, on top of the four generated per-kind storage helpers in parquet_columns_mutate (grow_storage, gather_storage, append_storage, copy_storage). What is left in this file is the part that is genuinely about the column as a whole rather than about one kind: geometry bookkeeping, the sparse bitmap (R2), and the string kinds' delegation to parquet_string_column (DD1) — the one storage that does not live in a Fortran array of its own.

Note the string kinds index their store by ELEMENT, not by row: a PK_STRING_VEC column of nrows rows and width w holds nrows*w strings, with row i's vector at flat positions (i-1)*w + 1 .. i*w (RF6). Every row-level operation below expands the row index range accordingly before delegating.


Uses