Keeps only the elements whose keep entry is .true., in order, compacting payload, offsets
and validity in one O(nchars) in-place pass. keep must have exactly size() entries.
Dropping every element leaves a valid empty column. Invalidates every outstanding handle
into the column. Note this is the bulk counterpart of erase: deleting m elements one at a
time costs O(m*nchars), this costs O(nchars) once.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(parquet_string_column), | intent(inout) | :: | self |
the column. |
||
| logical, | intent(in) | :: | keep(:) |
.true. for every element to retain. |
subroutine parquet_string_column_delete_by_mask(self, keep) type(parquet_string_column), intent(inout) :: self !! the column. logical, intent(in) :: keep(:) !! .true. for every element to retain. integer(int64) :: n integer :: nt n = self%nrows if (size(keep, kind=int64) /= n) then error stop EP//"delete_by_mask: mask length does not match the row count" end if if (n == 0_int64) return nt = bulk_threads(n, self%nchars) if (nt <= 1) then call delete_by_mask_serial(self, keep) else call delete_by_mask_parallel(self, keep, nt) end if end subroutine parquet_string_column_delete_by_mask