The row handle parquet_table_row: making one, resolving a column through it, and the two
queries that do not depend on a column's kind. The per-kind %get specifics are generated
into parquet_tables_access alongside the table's own accessors.
The structural rule this file exists to protect, and the reason the handle looks the way it
does: it points at the table's cache, never at the table. t%row(i) returns by value, and
a pointer associated with a target DUMMY becomes undefined the moment the function returns
(F2018 15.5.2.4) -- so r%cache => self would be valid only when the caller happened to
declare the table target, and silent memory corruption otherwise, with no diagnostic either
way. Pointing at self%cache, a pointer COMPONENT whose target is heap the table owns,
escapes that rule entirely and keeps target out of the public API. Do not "simplify" this.
Everything else the handle needs (the row index, the row scope, the detach flag) is copied by value, so a handle carries exactly what a lazy first touch requires and nothing that could go stale without also invalidating the handle.