parquet_tables_col Submodule

parquet_table_col — a resolved handle on one column of a parquet_table.

The column-major twin of parquet_tables_row.f90: where a parquet_table_row fixes the ROW and leaves the column to be named per access, this fixes the COLUMN and leaves the row to be given per access. A per-element loop over one column is the shape that pays, because the name lookup it removes is 52–77% of what a %get_element costs.

Three rules run through the file:

  • Resolve once, at creation. column_by_name/column_by_index do the whole of table_resolve's work — the lookup, the unsupported-type refusal, the lazy first touch — and store the slot, the kind and the row scope. Nothing here repeats any of it.
  • A handle does not survive a structural change. Every access runs col_resolve, which is an associated test and one integer(int64) comparison against the stamp taken at creation. That is deliberately conservative — %append does not move existing slots, so a handle could survive one — because a single total rule beats a list of exceptions the next mutation would silently fall outside.
  • The handle points at cache, never at the table. Same rule as the row handle, and it is what lets a caller hold a handle without the table needing the target attribute.

Uses