| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(parquet_reader), | intent(in) | :: | reader |
open reader. |
||
| character(len=*), | intent(in) | :: | name |
existing column name (dotted struct-leaf path allowed). |
||
| logical, | intent(out) | :: | is_nullable |
.true. if the stored field is declared nullable. |
Reports whether existing column name is declared NULLABLE in reader's file schema,
in is_nullable. A schema-only query -- it reads no column data, and says nothing about
whether the column actually contains any Null (parquet_column_has_nulls answers that,
from the footer's own null counts).
The two are genuinely different questions. A nullable column may hold no Null at all, which is the normal state of a column written through the streaming API with an all-.true. is_valid mask; a non-nullable one cannot hold a Null even in principle, because the file's own schema forbids it.
For a VECTOR column this reports the ELEMENT (child) field's flag, not the outer list field's -- the outer one is non-nullable by construction here, since a row's vector is never itself missing, so reporting it would answer a constant. A dotted struct path reports the leaf's own flag, the same rule parquet_get_column_type follows.
error stops only if name doesn't exist. A column this library cannot READ still has
a perfectly meaningful nullability flag, so an unreadable type is an answer here too,
exactly as it is for parquet_get_column_type.