Skip to main content

Module columnar_transform

Module columnar_transform 

Source
Available on crate feature arrow only.
Expand description

Arrow-native (vectorized) forms of the built-in record transforms (#636).

The Value transforms in crate::transform iterate records as serde_json::Value — a boxed map + boxed string per field per row. On the columnar fast path (#375) that means a parquet → select → parquet chain disqualifies the fast path and re-materializes every record. This module supplies the same transforms as whole-column operations on an Arrow RecordBatch, so the chain stays columnar end-to-end.

Only the transforms that are genuinely a column operation live here — select/drop (projection), rename_field (schema rename), set (constant column), redact (constant overwrite). They touch the record’s shape, never parse or re-type a value, so each is byte-identical to running the Value form on the same batch — which is exactly what the parity tests assert. Value-inspecting transforms (cast, value_case, hash, …) and the opaque ones (flatten, explode, …) return None and keep the chain on the Value path until they gain their own kernels.

Functions§

batch_form
The Arrow RecordBatch → RecordBatch form of t, or None when t has no vectorized kernel yet (the chain then stays on the Value path).