parquet_get_column_nullable Interface

interface
public module subroutine parquet_get_column_nullable(reader, name, is_nullable)

Arguments

Type IntentOptional 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.

Description

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.