parquet_write_row_mask Interface

public interface parquet_write_row_mask

Sets a whole-file row filter ("mask") on writer: mask(i) = .false. drops row i entirely from every column written from this point on (no trace at all -- no offset, no validity bit; this is not the same as writing a Null). Must be called after parquet_open_writer and before the writer's first parquet_write_column or parquet_new_row_group call, whichever comes first.

For a writer using only parquet_write_column (no row groups): every subsequent parquet_write_column call's values (or the row dimension of values(:,:)) must have length size(mask) exactly, and the resulting column has count(mask) rows.

For a writer using parquet_new_row_group/parquet_write_column_chunk: each parquet_new_row_group(writer, nrows) call automatically claims the next nrows positions of mask (in file order) as that row group's window, and every column's parquet_write_column_chunk call for that row group must supply values of length exactly nrows; the row group's actual written row count is count() of its window's mask slice (which may be anywhere from 0 to nrows). mask must be fully consumed by the writer's row groups by the time it closes (error stop at parquet_close_writer otherwise). See doc/pages/io/writing.md's "Filtering rows with a mask" for a worked example.

Mutually exclusive with parquet_write_chunk_row_mask on the same writer -- once either has been used, calling the other is an error stop. Callable at most once per writer -- a second call is an error stop rather than silently replacing the first mask.


Module Procedures

private interface parquet_write_row_mask_impl()

Arguments

None