| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(parquet_schema), | intent(in) | :: | schema |
a qc schema (composed or loaded). |
||
| character(len=:), | intent(out), | allocatable | :: | names(:) |
columns with a qc: block. |
Validates and parses a qc-maml's fields: entries into rules, one
entry per field that has at least a name (data_type/unit/ucd/etc.
are irrelevant here and never required) -- error stops on a
duplicate field name, an unknown top-level section/sub-key, or an
unrecognized qc: miss: value (anything other than Null/NA,
case-insensitive, or empty). Table-level metadata is ignored
entirely. See parquet_qc_rule's own doc comment for min_text/max_text.
The columns a qc-MAML declares an actual qc: block for, as a blank-padded array.
Answers "what does this qc actually constrain?" without exposing the rule objects
themselves: a field that merely NAMES a column, with no qc: key, declares nothing and
is left out -- the same distinction parquet_apply_qc makes before it reaches the reader.
names comes back zero-size when nothing is constrained. Sized to the longest name and
blank-padded, so trim(names(i)) is the name to pass on.