| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | lo |
first row of the range. |
||
| integer(kind=int64), | intent(in) | :: | hi |
last row of the range. |
||
| integer(kind=int64), | intent(in) | :: | width |
elements per row. |
||
| integer(kind=int64), | intent(out) | :: | mid_lo |
first row occupying a whole block. |
||
| integer(kind=int64), | intent(out) | :: | mid_hi |
last such row; < mid_lo when there is none. |
Exposes the parallel single-column read's validity-block alignment arithmetic for testing.
This is a debug hook, not API, public for the same reason
parquet_debug_table_set_inflight is: the procedure it forwards to lives in a submodule
and the property it computes cannot be observed from outside.
What it computes is which rows of lo..hi occupy WHOLE validity-bitmap blocks, and it is
the one thing standing between the parallel column read and a silent wrong answer -- two
threads pasting adjacent row groups share a bitmap block unless their ranges are trimmed
to this. That race is a few instructions wide, so an end-to-end test cannot be relied on
to catch a mistake in it; this makes the rule itself assertable, exactly as
parquet_debug_string_row_ranges does for parquet_string_column's byte-aligned split.
mid_lo > mid_hi reports that no whole block exists in the range.