parquet_tables_read Submodule

Turning a parquet file's columns into parquet_column stores: deciding each column's kind from the file schema, driving the per-kind readers, and freeing the Arrow buffers as it goes.

The work is split in two on purpose. Classification (table_classify) settles a column's kind, width and readability from the file SCHEMA alone and runs for every column at open time; it reads no data, which is what lets %kind/%width answer about a column nobody has touched. Materialization (table_materialize) reads the values, and happens on first touch.

The memory rule this file exists to enforce: the table owns the sole Fortran-side copy of each column, and the reader's decoded Arrow array is released the moment that copy exists. Without that release a materialized table would hold the whole file twice for the reader's entire lifetime. A struct is cached by the reader as ONE array covering all its leaves, which is why there are two release policies rather than one -- see table_materialize_all.


Uses