| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(parquet_column), | intent(in) | :: | col |
the column. |
.true. when at least one row is null.
Whether the column holds at least one null, WITHOUT writing to it -- the read path's
form of any_null, and the one every shared reader must use.
Identical answer, and identical cost on every kind but one. A temporal column's cache
is read when it is clean and simply re-scanned when it is dirty, rather than being
refreshed: the memoisation is an optimisation for any_null, never part of the answer,
so giving it up costs a dirty column one O(n) walk per call and buys the property that
any number of threads may ask at once.
type(parquet_column), not class, for the reason the per-cell tier above records --
and a class actual may be passed to it freely, which is how the two bulk validity
walks in this module reach it while holding self by intent(in).