parquet_slice Derived Type

type, public :: parquet_slice

Which rows to pick out of a column: 1:, 1:10, 1:10:2 or an explicit list.

Fortran cannot overload t%col('x')(1:10:2) on an arbitrary column expression, so the selection has to be an object the copy path can be handed. Build one with parquet_slice_range or parquet_slice_list and pass it to %get_slice.

The rows it selects are rows of THIS TABLE -- in the slice regime, index 1 is the table's first row, not the file's. That is a different thing from the table-level slice regime, which decides how much of the file the table covers in the first place.


Source Code

    type :: parquet_slice
        private
        logical :: strided = .true.       !! .true. for start:stop:step, .false. for a list.
        integer(int64) :: start = 1       !! first row (strided form).
        integer(int64) :: stop = -1       !! last row, or -1 meaning "to the end" (strided form).
        integer(int64) :: step = 1        !! stride, may be negative, never 0 (strided form).
        integer(int64), allocatable :: indices(:) !! explicit row list (list form).
    end type parquet_slice