parquet_string_column_reserve_validity Subroutine

public subroutine parquet_string_column_reserve_validity(self)

Materializes the validity bitmap now, with every element still valid.

Nothing about the column's contents changes -- the bitmap is initialised to all-ones -- so this is purely about when the allocation happens. Its reason to exist is concurrency: append_null/set_null allocate the bitmap lazily, so two threads nulling elements of the same previously null-free column would race on that allocation with no diagnostic. Calling this first leaves them nothing to allocate.

Idempotent: a column that already has a bitmap is untouched, and a zero-row column still gets the minimum allocation, so a later append has nothing to grow from scratch either.

Arguments

Type IntentOptional Attributes Name
type(parquet_string_column), intent(inout) :: self

the column.


Source Code

    subroutine parquet_string_column_reserve_validity(self)
        type(parquet_string_column), intent(inout) :: self !! the column.
        call ensure_validity_cap(self, max(self%nrows, 1_int64))
        self%has_nulls = .true.
    end subroutine parquet_string_column_reserve_validity