Avatar for the vortex-data user
vortex-data
vortex
BlogDocsChangelog

Performance History

Latest Results

perf(array): gather dict byte values straight into the offset builder `Dict::append_to_builder` took the dictionary values to full logical length via `take_canonical` and then appended that result, so exporting a dictionary-encoded string column allocated a full-length intermediate array which was immediately copied into the builder a second time. Dictionaries are usually far smaller than the arrays they encode, so when the target is a `DynVarBinBuilder` and the dtype is Utf8 or Binary, materialize only the values and gather by code. Resolving a value is then an O(1) read out of the views slice and data buffers, both hoisted out of the loop, and null codes are filled a run at a time with `for_each_set_index`. One fewer full-length allocation and copy. The new branch keeps the same guards as the generic path it precedes -- non-empty, primitive codes, not definitely-all-null codes -- and adds an explicit dtype check, so anything it does not handle still falls through unchanged. A code pointing at a null dictionary entry appends a null, matching the canonical route. The accompanying benchmark is sized to fit the CI time budget, and at that size the change is within run-to-run noise, so it stands as a regression guard rather than as evidence of a speedup. Correctness is asserted against `execute::<Canonical>` so the gather and canonical routes are compared directly. Signed-off-by: Robert Kruszewski <robert@spiraldb.com>
claude/dict-varbin-append
2 hours ago
perf(array): hoist per-row work out of append_varbinview `DynVarBinBuilder::append_varbinview` is the fallback every string encoding without a direct branch reaches through canonicalization, including Dict, Sparse, RunEnd, and anything on the default `VTable::append_to_builder`. Converting views to offsets has to visit each value, but the work around that walk does not have to be per-row: - `bytes_at` re-resolved the views slice and returned an owned `ByteBuffer` on every call. Resolve the views and data buffer slices once and borrow from them instead. Inlined values now come straight out of the view rather than round-tripping the views handle through `into_byte_buffer().slice_ref(..)`. - Validity was walked a bit at a time with `bit_buffer().iter().enumerate()`. Use `for_each_set_index`, which processes a `u64` word at a time, and fill the gaps between set bits with `append_n_nulls`. - The byte total is a sum over the fixed-width views and needs no value access, so the data buffer is sized once via a new `reserve_data` rather than reallocating as it grows. `reserve_exact` takes a row count and cannot serve this purpose. The accompanying benchmark is sized to fit the CI time budget, and at those sizes the change is within run-to-run noise, so it stands as a regression guard rather than as evidence of a speedup. Output is unchanged, which the extended tests assert against the source array. Signed-off-by: Robert Kruszewski <robert@spiraldb.com>
claude/varbin-builder-bulk-append
2 hours ago
perf(array): hoist per-row work out of append_varbinview `DynVarBinBuilder::append_varbinview` is the fallback every string encoding without a direct branch reaches through canonicalization, including Dict, Sparse, RunEnd, and anything on the default `VTable::append_to_builder`. Converting views to offsets has to visit each value, but the work around that walk does not have to be per-row: - `bytes_at` re-resolved the views slice and returned an owned `ByteBuffer` on every call. Resolve the views and data buffer slices once and borrow from them instead. Inlined values now come straight out of the view rather than round-tripping the views handle through `into_byte_buffer().slice_ref(..)`. - Validity was walked a bit at a time with `bit_buffer().iter().enumerate()`. Use `for_each_set_index`, which processes a `u64` word at a time, and fill the gaps between set bits with `append_n_nulls`. - The byte total is a sum over the fixed-width views and needs no value access, so the data buffer is sized once via a new `reserve_data` rather than reallocating as it grows. `reserve_exact` takes a row count and cannot serve this purpose. On measurement: at the benchmark sizes here (4096 and 16384) this is within noise against the previous implementation. The data buffer reservation is what carries the win, and it only becomes measurable once reallocation cost starts to dominate. Toggling only the `reserve_data` call on an otherwise identical build at 65536 rows moves `heap_all_valid` from 2.37ms to 637us. That size overshoots the benchmark time budget, so it is not tracked here. Signed-off-by: Robert Kruszewski <robert@spiraldb.com>
claude/varbin-builder-bulk-append
2 hours ago
fix(deps): update lance benchmark dependencies to v59
renovate/major-lance-bench
2 hours ago
fix(deps): update lance benchmark dependencies (major) (#8989) > ā„¹ļø **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [arrow-cast](https://redirect.github.com/apache/arrow-rs) | dependencies | major | `58` → `59` | | [lance](https://redirect.github.com/lance-format/lance) | dependencies | major | `7` → `9` | | [lance-encoding](https://redirect.github.com/lance-format/lance) | dependencies | major | `7` → `9` | | [parquet](https://redirect.github.com/apache/arrow-rs) | dependencies | major | `58` → `59` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/357) for more information. --- ### Release Notes <details> <summary>apache/arrow-rs (arrow-cast)</summary> ### [`v59.1.0`](https://redirect.github.com/apache/arrow-rs/blob/HEAD/CHANGELOG.md#5910-2026-07-03) [Compare Source](https://redirect.github.com/apache/arrow-rs/compare/59.0.0...59.1.0) [Full Changelog](https://redirect.github.com/apache/arrow-rs/compare/59.0.0...59.1.0) **Implemented enhancements:** - Fast path for nested `DictionaryArray` casting [#&#8203;10247](https://redirect.github.com/apache/arrow-rs/issues/10247) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary [#&#8203;10243](https://redirect.github.com/apache/arrow-rs/issues/10243) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Add product aggregate kernel to arrow-rs [#&#8203;10150](https://redirect.github.com/apache/arrow-rs/issues/10150) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Stricter `DataType` parsing [#&#8203;10146](https://redirect.github.com/apache/arrow-rs/issues/10146) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Support validating CSV headers against Schema [#&#8203;10143](https://redirect.github.com/apache/arrow-rs/issues/10143) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - arrow-ipc: Supports compression level configuration for arrow-ipc writer [#&#8203;10132](https://redirect.github.com/apache/arrow-rs/issues/10132) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - \[Variant] `VariantArray` field API naming [#&#8203;10093](https://redirect.github.com/apache/arrow-rs/issues/10093) - Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [#&#8203;10092](https://redirect.github.com/apache/arrow-rs/issues/10092) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 [#&#8203;10087](https://redirect.github.com/apache/arrow-rs/issues/10087) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - feat: native concat for `MapArray` [#&#8203;10047](https://redirect.github.com/apache/arrow-rs/issues/10047) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - \[Variant] Add `variant_to_arrow` `Dictionary/REE` type support [#&#8203;10013](https://redirect.github.com/apache/arrow-rs/issues/10013) **Fixed bugs:** - arrow-row on fixed size binary/list with size 0 and no nulls return wrong length [#&#8203;10270](https://redirect.github.com/apache/arrow-rs/issues/10270) - casting list to 0-size fixedsizelist can cause incorrect output length [#&#8203;10227](https://redirect.github.com/apache/arrow-rs/issues/10227) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Buffer count mismatched with metadata when encoding records with dictionary of dictionaries [#&#8203;10213](https://redirect.github.com/apache/arrow-rs/issues/10213) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - `Buffer::into_mutable` is not consistent regarding sliced data and can lead to panics [#&#8203;10117](https://redirect.github.com/apache/arrow-rs/issues/10117) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - parquet\_derive: cannot read or write columns whose name is a Rust keyword (raw identifiers like r#type become column "r#type") [#&#8203;10112](https://redirect.github.com/apache/arrow-rs/issues/10112) - parquet: fix OffsetBuffer panic on corrupt input [#&#8203;10107](https://redirect.github.com/apache/arrow-rs/issues/10107) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata [#&#8203;9929](https://redirect.github.com/apache/arrow-rs/issues/9929) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] **Documentation updates:** - doc: More comments to `concat_batches` [#&#8203;10178](https://redirect.github.com/apache/arrow-rs/pull/10178) ([2010YOUY01](https://redirect.github.com/2010YOUY01)) - Minor: improve PageStore docs with a temp-file spilling example [#&#8203;10074](https://redirect.github.com/apache/arrow-rs/pull/10074) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://redirect.github.com/alamb)) **Performance improvements:** - perf: interleave\_list for List\<Primitive> could be optimized? [#&#8203;10022](https://redirect.github.com/apache/arrow-rs/issues/10022) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - perf(arrow-ord): Avoid full index materialization for small-limit lexsorts [#&#8203;9990](https://redirect.github.com/apache/arrow-rs/issues/9990) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Replace conversion of binary->string in arrow-row from arraydata to direct construction [#&#8203;10261](https://redirect.github.com/apache/arrow-rs/pull/10261) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - \[arrow-flight encode path]re-use flatbufferbuilder [#&#8203;10220](https://redirect.github.com/apache/arrow-rs/pull/10220) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - \[10125] arrow-flight decode path optimizations (add `skip_validation` to arrow-flight) [#&#8203;10206](https://redirect.github.com/apache/arrow-rs/pull/10206) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Improve performance of `concat_elements` ByteViewArray concatenation [#&#8203;10161](https://redirect.github.com/apache/arrow-rs/pull/10161) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://redirect.github.com/pepijnve)) - \[arrow-flight] Optimize flight, remove some allocations, add dictionary focused benchmarks [#&#8203;10126](https://redirect.github.com/apache/arrow-rs/pull/10126) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - optimize(concat): concat map implementation [#&#8203;10048](https://redirect.github.com/apache/arrow-rs/pull/10048) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://redirect.github.com/mapleFU)) - Reduce copies in Arrow IPC writer [#&#8203;10044](https://redirect.github.com/apache/arrow-rs/pull/10044) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - perf(interleave): Optimize list interleave\_list when child is primitive [#&#8203;10025](https://redirect.github.com/apache/arrow-rs/pull/10025) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://redirect.github.com/mapleFU)) **Closed issues:** - Soundness: Unsound alignment contract in public `FromBytes` trait and `BitReader::get_batch` [#&#8203;10164](https://redirect.github.com/apache/arrow-rs/issues/10164) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - ParquetPushDecoder: expose the next row-group index that try\_next\_reader will yield [#&#8203;10148](https://redirect.github.com/apache/arrow-rs/issues/10148) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - arrow-ipc: Extend writer benchmarks to include dictionaries [#&#8203;10119](https://redirect.github.com/apache/arrow-rs/issues/10119) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - bench(parquet): benchmark for nested list write [#&#8203;10083](https://redirect.github.com/apache/arrow-rs/issues/10083) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Support i256 implement From\<i128> [#&#8203;10080](https://redirect.github.com/apache/arrow-rs/issues/10080) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] **Merged pull requests:** - fix(arrow-row): allow to convert non empty fixed size binary/list array with size length 0 and no nulls [#&#8203;10271](https://redirect.github.com/apache/arrow-rs/pull/10271) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - chore: Fix audit CI run by ignore quick-xml audit advisories [#&#8203;10267](https://redirect.github.com/apache/arrow-rs/pull/10267) ([alamb](https://redirect.github.com/alamb)) - fix main: parquet test compilation failure [#&#8203;10266](https://redirect.github.com/apache/arrow-rs/pull/10266) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - minor: drive-by refactors for dicts in substring & filter [#&#8203;10264](https://redirect.github.com/apache/arrow-rs/pull/10264) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - Add validated row decode benchmark [#&#8203;10259](https://redirect.github.com/apache/arrow-rs/pull/10259) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - arrow-cast: Add optimized path for unnesting a dict [#&#8203;10248](https://redirect.github.com/apache/arrow-rs/pull/10248) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([brancz](https://redirect.github.com/brancz)) - feat: support uuid from fixed type of length 16 [#&#8203;10241](https://redirect.github.com/apache/arrow-rs/pull/10241) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([ariel-miculas](https://redirect.github.com/ariel-miculas)) - chore(deps): bump actions/cache from 6.0.0 to 6.1.0 [#&#8203;10240](https://redirect.github.com/apache/arrow-rs/pull/10240) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - fix: Rename parquet feature flag 'flate2-rust\_backened' to 'flate2-rust\_backend' [#&#8203;10239](https://redirect.github.com/apache/arrow-rs/pull/10239) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([dannycjones](https://redirect.github.com/dannycjones)) - chore: Make clippy::question\_mark happy [#&#8203;10231](https://redirect.github.com/apache/arrow-rs/pull/10231) ([Tpt](https://redirect.github.com/Tpt)) - fix(ipc): reject dictionary-encoded dictionary values [#&#8203;10230](https://redirect.github.com/apache/arrow-rs/pull/10230) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([goutamadwant](https://redirect.github.com/goutamadwant)) - Replace `ArrayData` with direct `Array` construction in `arrow-row` [#&#8203;10229](https://redirect.github.com/apache/arrow-rs/pull/10229) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - fix: casting list to fixedsizelist didn't respect input length [#&#8203;10228](https://redirect.github.com/apache/arrow-rs/pull/10228) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: Fix clippy::byte\_char\_slices (use byte strings instead of explicit arrays) [#&#8203;10225](https://redirect.github.com/apache/arrow-rs/pull/10225) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://redirect.github.com/Tpt)) - nit: arrow-pyarrow: Use string interning [#&#8203;10224](https://redirect.github.com/apache/arrow-rs/pull/10224) ([Tpt](https://redirect.github.com/Tpt)) - Support concatenation of mixed FixedSizeBinary via `concat_elements_dyn` [#&#8203;10222](https://redirect.github.com/apache/arrow-rs/pull/10222) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://redirect.github.com/pepijnve)) - rename Compression struct [#&#8203;10221](https://redirect.github.com/apache/arrow-rs/pull/10221) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - chore(deps): bump the all-other-cargo-deps group across 1 directory with 16 updates [#&#8203;10218](https://redirect.github.com/apache/arrow-rs/pull/10218) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 [#&#8203;10210](https://redirect.github.com/apache/arrow-rs/pull/10210) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - \[10125] Introduce mult-batch decode benchmarks [#&#8203;10207](https://redirect.github.com/apache/arrow-rs/pull/10207) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - chore(deps): bump actions/cache from 5.0.5 to 6.0.0 [#&#8203;10203](https://redirect.github.com/apache/arrow-rs/pull/10203) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - introduce decode benchmarks [#&#8203;10202](https://redirect.github.com/apache/arrow-rs/pull/10202) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Fix `merge_kernels` benchmark panic due to not wrapping with `Scalar` [#&#8203;10199](https://redirect.github.com/apache/arrow-rs/pull/10199) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - Benchmarks and performance improvement for parquet boolean reader [#&#8203;10196](https://redirect.github.com/apache/arrow-rs/pull/10196) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://redirect.github.com/jhorstmann)) - add stale PR workflow [#&#8203;10194](https://redirect.github.com/apache/arrow-rs/pull/10194) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: group minor/patch dependabot updates [#&#8203;10193](https://redirect.github.com/apache/arrow-rs/pull/10193) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore(deps): bump http from 1.4.0 to 1.4.2 [#&#8203;10191](https://redirect.github.com/apache/arrow-rs/pull/10191) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump syn from 2.0.117 to 2.0.118 [#&#8203;10190](https://redirect.github.com/apache/arrow-rs/pull/10190) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump chrono from 0.4.44 to 0.4.45 [#&#8203;10188](https://redirect.github.com/apache/arrow-rs/pull/10188) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump uuid from 1.23.1 to 1.23.3 [#&#8203;10186](https://redirect.github.com/apache/arrow-rs/pull/10186) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore: run `cargo update` to bump quinn [#&#8203;10181](https://redirect.github.com/apache/arrow-rs/pull/10181) ([Jefffrey](https://redirect.github.com/Jefffrey)) - test: cover signed integers and bool in BitReader::get\_batch test [#&#8203;10180](https://redirect.github.com/apache/arrow-rs/pull/10180) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://redirect.github.com/alamb)) - \[arrow-select] perf: Replace `ArrayData` with direct `Array` construction in take kernels [#&#8203;10176](https://redirect.github.com/apache/arrow-rs/pull/10176) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([liamzwbao](https://redirect.github.com/liamzwbao)) - Return PyValueError for nullable PyArrow struct imports [#&#8203;10174](https://redirect.github.com/apache/arrow-rs/pull/10174) ([fallintoplace](https://redirect.github.com/fallintoplace)) - Fix Variant time microsecond JSON formatting [#&#8203;10173](https://redirect.github.com/apache/arrow-rs/pull/10173) ([fallintoplace](https://redirect.github.com/fallintoplace)) - Split traits for plain and bitpacked decoding and fix soundness issue in BitReader::get\_batch [#&#8203;10172](https://redirect.github.com/apache/arrow-rs/pull/10172) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://redirect.github.com/jhorstmann)) - fix: switch generic usages of `i128` to `IntervalMonthDayNano` for MonthDayNano type [#&#8203;10171](https://redirect.github.com/apache/arrow-rs/pull/10171) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: specify `--locked` when cargo installing `cargo-audit` [#&#8203;10170](https://redirect.github.com/apache/arrow-rs/pull/10170) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: Fix clippy::useless\_borrows\_in\_formatting [#&#8203;10163](https://redirect.github.com/apache/arrow-rs/pull/10163) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://redirect.github.com/Tpt)) - fix(arrow-cast): respect cast safety for overflowing temporal casts [#&#8203;10162](https://redirect.github.com/apache/arrow-rs/pull/10162) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([SAY-5](https://redirect.github.com/SAY-5)) - chore(deps): bump actions/checkout from 6 to 7 [#&#8203;10159](https://redirect.github.com/apache/arrow-rs/pull/10159) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - feat(parquet): add ParquetPushDecoder::peek\_next\_row\_group() [#&#8203;10158](https://redirect.github.com/apache/arrow-rs/pull/10158) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([zhuqi-lucas](https://redirect.github.com/zhuqi-lucas)) - feat(pyarrow) `FromPyArrow` on `Vec<T>`: allow any iterable for input [#&#8203;10155](https://redirect.github.com/apache/arrow-rs/pull/10155) ([Tpt](https://redirect.github.com/Tpt)) - nit: pyarrow: simplify class validation error creation [#&#8203;10154](https://redirect.github.com/apache/arrow-rs/pull/10154) ([Tpt](https://redirect.github.com/Tpt)) - \[Variant] add doc reference to `VariantArrayBuilder` [#&#8203;10152](https://redirect.github.com/apache/arrow-rs/pull/10152) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat: Adds product aggregate compute kernel [#&#8203;10151](https://redirect.github.com/apache/arrow-rs/pull/10151) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([devanbenz](https://redirect.github.com/devanbenz)) - Stricter datatype parsing for decimals, fixedsizelists and time32/64 [#&#8203;10147](https://redirect.github.com/apache/arrow-rs/pull/10147) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - feat(arrow\_csv): add header validation option [#&#8203;10144](https://redirect.github.com/apache/arrow-rs/pull/10144) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([XiNiHa](https://redirect.github.com/XiNiHa)) - \[Parquet] route dictionary page through the PageStore [#&#8203;10142](https://redirect.github.com/apache/arrow-rs/pull/10142) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([liamzwbao](https://redirect.github.com/liamzwbao)) - chore: update pyo3 dependency to 0.29 [#&#8203;10134](https://redirect.github.com/apache/arrow-rs/pull/10134) ([timsaucer](https://redirect.github.com/timsaucer)) - feat(ipc): Supports compression level configuration [#&#8203;10133](https://redirect.github.com/apache/arrow-rs/pull/10133) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([wForget](https://redirect.github.com/wForget)) - fix: write error for dbg output of out of range timestamps [#&#8203;10130](https://redirect.github.com/apache/arrow-rs/pull/10130) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - \[Variant] `VariantArray` field API naming [#&#8203;10124](https://redirect.github.com/apache/arrow-rs/pull/10124) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat(arrow\_array): add helper function to create MapArray from `Vec<Option<Vec<(Key, Option<Value>)>>>` for tests [#&#8203;10123](https://redirect.github.com/apache/arrow-rs/pull/10123) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([rluvaton](https://redirect.github.com/rluvaton)) - perf(arrow-ipc): Add writer benchmarks for dictionaries [#&#8203;10122](https://redirect.github.com/apache/arrow-rs/pull/10122) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([JakeDern](https://redirect.github.com/JakeDern)) - feat: support `MapArray` in lengths kernel [#&#8203;10121](https://redirect.github.com/apache/arrow-rs/pull/10121) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - feat: add `OffsetBuffer::subtract` to allow to shift offsets by value [#&#8203;10120](https://redirect.github.com/apache/arrow-rs/pull/10120) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - fix: `Buffer::into_mutable` return error instead of panic for converting owned sliced when not start at 0 and fix returned Mutable length [#&#8203;10118](https://redirect.github.com/apache/arrow-rs/pull/10118) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - chore: update `Bytes` visibility to correctly reflect the actual visibility [#&#8203;10115](https://redirect.github.com/apache/arrow-rs/pull/10115) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - fix(parquet\_derive): support raw identifiers as column names [#&#8203;10113](https://redirect.github.com/apache/arrow-rs/pull/10113) ([cbmixx](https://redirect.github.com/cbmixx)) - removed clippy ignore statment [#&#8203;10111](https://redirect.github.com/apache/arrow-rs/pull/10111) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [#&#8203;10110](https://redirect.github.com/apache/arrow-rs/pull/10110) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - fix(parquet): return error instead of panicking in pad\_nulls on corrupt input [#&#8203;10108](https://redirect.github.com/apache/arrow-rs/pull/10108) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([thepenguinco](https://redirect.github.com/thepenguinco)) - Minor: Add interleave tests for List\<Decimal128> and List\<Timestamp(tz)> [#&#8203;10099](https://redirect.github.com/apache/arrow-rs/pull/10099) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - Add arrow-flight test coverage for IPC compression [#&#8203;10097](https://redirect.github.com/apache/arrow-rs/pull/10097) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([alamb](https://redirect.github.com/alamb)) - chore(deps): bump pyspark from 3.3.2 to 3.4.4 in /parquet/pytest [#&#8203;10091](https://redirect.github.com/apache/arrow-rs/pull/10091) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - refactor(parquet): bundle array reader recursion args into `ReaderArgs` [#&#8203;10089](https://redirect.github.com/apache/arrow-rs/pull/10089) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([HippoBaro](https://redirect.github.com/HippoBaro)) - arrow-buffer: implement Saturating, Checked num-traits for i256 [#&#8203;10088](https://redirect.github.com/apache/arrow-rs/pull/10088) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([theirix](https://redirect.github.com/theirix)) - bench(parquet): add nested list writer benchmarks [#&#8203;10084](https://redirect.github.com/apache/arrow-rs/pull/10084) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([mapleFU](https://redirect.github.com/mapleFU)) - Implement From\<i128> for i256 [#&#8203;10081](https://redirect.github.com/apache/arrow-rs/pull/10081) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([AdamGS](https://redirect.github.com/AdamGS)) - test(parquet): drop confusing `main` reference in page-roundtrip test comment [#&#8203;10072](https://redirect.github.com/apache/arrow-rs/pull/10072) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([adriangb](https://redirect.github.com/adriangb)) - ci: Split miri tests into 4 parallel shards [#&#8203;10067](https://redirect.github.com/apache/arrow-rs/pull/10067) ([AdamGS](https://redirect.github.com/AdamGS)) - Add tests and fix corner cases for Parquet/GeoArrow extension type conversion [#&#8203;10065](https://redirect.github.com/apache/arrow-rs/pull/10065) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([paleolimbot](https://redirect.github.com/paleolimbot)) - Support writing REE arrays directly to Parquet [#&#8203;10064](https://redirect.github.com/apache/arrow-rs/pull/10064) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - test(arrow-select): additional tests for inline-view filter fast path (tests for [#&#8203;9755](https://redirect.github.com/apache/arrow-rs/issues/9755)) [#&#8203;10054](https://redirect.github.com/apache/arrow-rs/pull/10054) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - test(arrow-select): add take\_bytes coverage for sliced values and nullable offset overflow [#&#8203;10053](https://redirect.github.com/apache/arrow-rs/pull/10053) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - Consolidate `filter_null_mask` into `FilterPredicate::filter_nulls` [#&#8203;10049](https://redirect.github.com/apache/arrow-rs/pull/10049) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - \[Variant] Add `VariantBuilder` values check [#&#8203;10016](https://redirect.github.com/apache/arrow-rs/pull/10016) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - \[Variant] Preserve `UUID` extension type metadata for Parquet writer [#&#8203;10015](https://redirect.github.com/apache/arrow-rs/pull/10015) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat(parquet-variant): add Dictionary and REE variant\_to\_arrow support [#&#8203;10014](https://redirect.github.com/apache/arrow-rs/pull/10014) ([mneetika](https://redirect.github.com/mneetika)) - perf(arrow-ord): Avoid full index materialization for small-limit lexsorts [#&#8203;9991](https://redirect.github.com/apache/arrow-rs/pull/9991) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pchintar](https://redirect.github.com/pchintar)) \* *This Changelog was automatically generated by [github\_changelog\_generator](https://redirect.github.com/github-changelog-generator/github-changelog-generator)* ### [`v59.0.0`](https://redirect.github.com/apache/arrow-rs/blob/HEAD/CHANGELOG.md#5910-2026-07-03) [Compare Source](https://redirect.github.com/apache/arrow-rs/compare/58.4.0...59.0.0) [Full Changelog](https://redirect.github.com/apache/arrow-rs/compare/59.0.0...59.1.0) **Implemented enhancements:** - Fast path for nested `DictionaryArray` casting [#&#8203;10247](https://redirect.github.com/apache/arrow-rs/issues/10247) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary [#&#8203;10243](https://redirect.github.com/apache/arrow-rs/issues/10243) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Add product aggregate kernel to arrow-rs [#&#8203;10150](https://redirect.github.com/apache/arrow-rs/issues/10150) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Stricter `DataType` parsing [#&#8203;10146](https://redirect.github.com/apache/arrow-rs/issues/10146) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Support validating CSV headers against Schema [#&#8203;10143](https://redirect.github.com/apache/arrow-rs/issues/10143) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - arrow-ipc: Supports compression level configuration for arrow-ipc writer [#&#8203;10132](https://redirect.github.com/apache/arrow-rs/issues/10132) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - \[Variant] `VariantArray` field API naming [#&#8203;10093](https://redirect.github.com/apache/arrow-rs/issues/10093) - Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [#&#8203;10092](https://redirect.github.com/apache/arrow-rs/issues/10092) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 [#&#8203;10087](https://redirect.github.com/apache/arrow-rs/issues/10087) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - feat: native concat for `MapArray` [#&#8203;10047](https://redirect.github.com/apache/arrow-rs/issues/10047) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - \[Variant] Add `variant_to_arrow` `Dictionary/REE` type support [#&#8203;10013](https://redirect.github.com/apache/arrow-rs/issues/10013) **Fixed bugs:** - arrow-row on fixed size binary/list with size 0 and no nulls return wrong length [#&#8203;10270](https://redirect.github.com/apache/arrow-rs/issues/10270) - casting list to 0-size fixedsizelist can cause incorrect output length [#&#8203;10227](https://redirect.github.com/apache/arrow-rs/issues/10227) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Buffer count mismatched with metadata when encoding records with dictionary of dictionaries [#&#8203;10213](https://redirect.github.com/apache/arrow-rs/issues/10213) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - `Buffer::into_mutable` is not consistent regarding sliced data and can lead to panics [#&#8203;10117](https://redirect.github.com/apache/arrow-rs/issues/10117) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - parquet\_derive: cannot read or write columns whose name is a Rust keyword (raw identifiers like r#type become column "r#type") [#&#8203;10112](https://redirect.github.com/apache/arrow-rs/issues/10112) - parquet: fix OffsetBuffer panic on corrupt input [#&#8203;10107](https://redirect.github.com/apache/arrow-rs/issues/10107) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata [#&#8203;9929](https://redirect.github.com/apache/arrow-rs/issues/9929) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] **Documentation updates:** - doc: More comments to `concat_batches` [#&#8203;10178](https://redirect.github.com/apache/arrow-rs/pull/10178) ([2010YOUY01](https://redirect.github.com/2010YOUY01)) - Minor: improve PageStore docs with a temp-file spilling example [#&#8203;10074](https://redirect.github.com/apache/arrow-rs/pull/10074) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://redirect.github.com/alamb)) **Performance improvements:** - perf: interleave\_list for List\<Primitive> could be optimized? [#&#8203;10022](https://redirect.github.com/apache/arrow-rs/issues/10022) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - perf(arrow-ord): Avoid full index materialization for small-limit lexsorts [#&#8203;9990](https://redirect.github.com/apache/arrow-rs/issues/9990) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - Replace conversion of binary->string in arrow-row from arraydata to direct construction [#&#8203;10261](https://redirect.github.com/apache/arrow-rs/pull/10261) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - \[arrow-flight encode path]re-use flatbufferbuilder [#&#8203;10220](https://redirect.github.com/apache/arrow-rs/pull/10220) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - \[10125] arrow-flight decode path optimizations (add `skip_validation` to arrow-flight) [#&#8203;10206](https://redirect.github.com/apache/arrow-rs/pull/10206) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Improve performance of `concat_elements` ByteViewArray concatenation [#&#8203;10161](https://redirect.github.com/apache/arrow-rs/pull/10161) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://redirect.github.com/pepijnve)) - \[arrow-flight] Optimize flight, remove some allocations, add dictionary focused benchmarks [#&#8203;10126](https://redirect.github.com/apache/arrow-rs/pull/10126) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - optimize(concat): concat map implementation [#&#8203;10048](https://redirect.github.com/apache/arrow-rs/pull/10048) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://redirect.github.com/mapleFU)) - Reduce copies in Arrow IPC writer [#&#8203;10044](https://redirect.github.com/apache/arrow-rs/pull/10044) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - perf(interleave): Optimize list interleave\_list when child is primitive [#&#8203;10025](https://redirect.github.com/apache/arrow-rs/pull/10025) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://redirect.github.com/mapleFU)) **Closed issues:** - Soundness: Unsound alignment contract in public `FromBytes` trait and `BitReader::get_batch` [#&#8203;10164](https://redirect.github.com/apache/arrow-rs/issues/10164) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - ParquetPushDecoder: expose the next row-group index that try\_next\_reader will yield [#&#8203;10148](https://redirect.github.com/apache/arrow-rs/issues/10148) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - arrow-ipc: Extend writer benchmarks to include dictionaries [#&#8203;10119](https://redirect.github.com/apache/arrow-rs/issues/10119) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] - bench(parquet): benchmark for nested list write [#&#8203;10083](https://redirect.github.com/apache/arrow-rs/issues/10083) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] - Support i256 implement From\<i128> [#&#8203;10080](https://redirect.github.com/apache/arrow-rs/issues/10080) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] **Merged pull requests:** - fix(arrow-row): allow to convert non empty fixed size binary/list array with size length 0 and no nulls [#&#8203;10271](https://redirect.github.com/apache/arrow-rs/pull/10271) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - chore: Fix audit CI run by ignore quick-xml audit advisories [#&#8203;10267](https://redirect.github.com/apache/arrow-rs/pull/10267) ([alamb](https://redirect.github.com/alamb)) - fix main: parquet test compilation failure [#&#8203;10266](https://redirect.github.com/apache/arrow-rs/pull/10266) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - minor: drive-by refactors for dicts in substring & filter [#&#8203;10264](https://redirect.github.com/apache/arrow-rs/pull/10264) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - Add validated row decode benchmark [#&#8203;10259](https://redirect.github.com/apache/arrow-rs/pull/10259) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - arrow-cast: Add optimized path for unnesting a dict [#&#8203;10248](https://redirect.github.com/apache/arrow-rs/pull/10248) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([brancz](https://redirect.github.com/brancz)) - feat: support uuid from fixed type of length 16 [#&#8203;10241](https://redirect.github.com/apache/arrow-rs/pull/10241) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([ariel-miculas](https://redirect.github.com/ariel-miculas)) - chore(deps): bump actions/cache from 6.0.0 to 6.1.0 [#&#8203;10240](https://redirect.github.com/apache/arrow-rs/pull/10240) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - fix: Rename parquet feature flag 'flate2-rust\_backened' to 'flate2-rust\_backend' [#&#8203;10239](https://redirect.github.com/apache/arrow-rs/pull/10239) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([dannycjones](https://redirect.github.com/dannycjones)) - chore: Make clippy::question\_mark happy [#&#8203;10231](https://redirect.github.com/apache/arrow-rs/pull/10231) ([Tpt](https://redirect.github.com/Tpt)) - fix(ipc): reject dictionary-encoded dictionary values [#&#8203;10230](https://redirect.github.com/apache/arrow-rs/pull/10230) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([goutamadwant](https://redirect.github.com/goutamadwant)) - Replace `ArrayData` with direct `Array` construction in `arrow-row` [#&#8203;10229](https://redirect.github.com/apache/arrow-rs/pull/10229) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - fix: casting list to fixedsizelist didn't respect input length [#&#8203;10228](https://redirect.github.com/apache/arrow-rs/pull/10228) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: Fix clippy::byte\_char\_slices (use byte strings instead of explicit arrays) [#&#8203;10225](https://redirect.github.com/apache/arrow-rs/pull/10225) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://redirect.github.com/Tpt)) - nit: arrow-pyarrow: Use string interning [#&#8203;10224](https://redirect.github.com/apache/arrow-rs/pull/10224) ([Tpt](https://redirect.github.com/Tpt)) - Support concatenation of mixed FixedSizeBinary via `concat_elements_dyn` [#&#8203;10222](https://redirect.github.com/apache/arrow-rs/pull/10222) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://redirect.github.com/pepijnve)) - rename Compression struct [#&#8203;10221](https://redirect.github.com/apache/arrow-rs/pull/10221) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - chore(deps): bump the all-other-cargo-deps group across 1 directory with 16 updates [#&#8203;10218](https://redirect.github.com/apache/arrow-rs/pull/10218) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 [#&#8203;10210](https://redirect.github.com/apache/arrow-rs/pull/10210) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - \[10125] Introduce mult-batch decode benchmarks [#&#8203;10207](https://redirect.github.com/apache/arrow-rs/pull/10207) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - chore(deps): bump actions/cache from 5.0.5 to 6.0.0 [#&#8203;10203](https://redirect.github.com/apache/arrow-rs/pull/10203) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - introduce decode benchmarks [#&#8203;10202](https://redirect.github.com/apache/arrow-rs/pull/10202) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Fix `merge_kernels` benchmark panic due to not wrapping with `Scalar` [#&#8203;10199](https://redirect.github.com/apache/arrow-rs/pull/10199) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - Benchmarks and performance improvement for parquet boolean reader [#&#8203;10196](https://redirect.github.com/apache/arrow-rs/pull/10196) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://redirect.github.com/jhorstmann)) - add stale PR workflow [#&#8203;10194](https://redirect.github.com/apache/arrow-rs/pull/10194) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: group minor/patch dependabot updates [#&#8203;10193](https://redirect.github.com/apache/arrow-rs/pull/10193) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore(deps): bump http from 1.4.0 to 1.4.2 [#&#8203;10191](https://redirect.github.com/apache/arrow-rs/pull/10191) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump syn from 2.0.117 to 2.0.118 [#&#8203;10190](https://redirect.github.com/apache/arrow-rs/pull/10190) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump chrono from 0.4.44 to 0.4.45 [#&#8203;10188](https://redirect.github.com/apache/arrow-rs/pull/10188) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore(deps): bump uuid from 1.23.1 to 1.23.3 [#&#8203;10186](https://redirect.github.com/apache/arrow-rs/pull/10186) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - chore: run `cargo update` to bump quinn [#&#8203;10181](https://redirect.github.com/apache/arrow-rs/pull/10181) ([Jefffrey](https://redirect.github.com/Jefffrey)) - test: cover signed integers and bool in BitReader::get\_batch test [#&#8203;10180](https://redirect.github.com/apache/arrow-rs/pull/10180) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://redirect.github.com/alamb)) - \[arrow-select] perf: Replace `ArrayData` with direct `Array` construction in take kernels [#&#8203;10176](https://redirect.github.com/apache/arrow-rs/pull/10176) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([liamzwbao](https://redirect.github.com/liamzwbao)) - Return PyValueError for nullable PyArrow struct imports [#&#8203;10174](https://redirect.github.com/apache/arrow-rs/pull/10174) ([fallintoplace](https://redirect.github.com/fallintoplace)) - Fix Variant time microsecond JSON formatting [#&#8203;10173](https://redirect.github.com/apache/arrow-rs/pull/10173) ([fallintoplace](https://redirect.github.com/fallintoplace)) - Split traits for plain and bitpacked decoding and fix soundness issue in BitReader::get\_batch [#&#8203;10172](https://redirect.github.com/apache/arrow-rs/pull/10172) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://redirect.github.com/jhorstmann)) - fix: switch generic usages of `i128` to `IntervalMonthDayNano` for MonthDayNano type [#&#8203;10171](https://redirect.github.com/apache/arrow-rs/pull/10171) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: specify `--locked` when cargo installing `cargo-audit` [#&#8203;10170](https://redirect.github.com/apache/arrow-rs/pull/10170) ([Jefffrey](https://redirect.github.com/Jefffrey)) - chore: Fix clippy::useless\_borrows\_in\_formatting [#&#8203;10163](https://redirect.github.com/apache/arrow-rs/pull/10163) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://redirect.github.com/Tpt)) - fix(arrow-cast): respect cast safety for overflowing temporal casts [#&#8203;10162](https://redirect.github.com/apache/arrow-rs/pull/10162) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([SAY-5](https://redirect.github.com/SAY-5)) - chore(deps): bump actions/checkout from 6 to 7 [#&#8203;10159](https://redirect.github.com/apache/arrow-rs/pull/10159) ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - feat(parquet): add ParquetPushDecoder::peek\_next\_row\_group() [#&#8203;10158](https://redirect.github.com/apache/arrow-rs/pull/10158) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([zhuqi-lucas](https://redirect.github.com/zhuqi-lucas)) - feat(pyarrow) `FromPyArrow` on `Vec<T>`: allow any iterable for input [#&#8203;10155](https://redirect.github.com/apache/arrow-rs/pull/10155) ([Tpt](https://redirect.github.com/Tpt)) - nit: pyarrow: simplify class validation error creation [#&#8203;10154](https://redirect.github.com/apache/arrow-rs/pull/10154) ([Tpt](https://redirect.github.com/Tpt)) - \[Variant] add doc reference to `VariantArrayBuilder` [#&#8203;10152](https://redirect.github.com/apache/arrow-rs/pull/10152) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat: Adds product aggregate compute kernel [#&#8203;10151](https://redirect.github.com/apache/arrow-rs/pull/10151) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([devanbenz](https://redirect.github.com/devanbenz)) - Stricter datatype parsing for decimals, fixedsizelists and time32/64 [#&#8203;10147](https://redirect.github.com/apache/arrow-rs/pull/10147) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - feat(arrow\_csv): add header validation option [#&#8203;10144](https://redirect.github.com/apache/arrow-rs/pull/10144) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([XiNiHa](https://redirect.github.com/XiNiHa)) - \[Parquet] route dictionary page through the PageStore [#&#8203;10142](https://redirect.github.com/apache/arrow-rs/pull/10142) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([liamzwbao](https://redirect.github.com/liamzwbao)) - chore: update pyo3 dependency to 0.29 [#&#8203;10134](https://redirect.github.com/apache/arrow-rs/pull/10134) ([timsaucer](https://redirect.github.com/timsaucer)) - feat(ipc): Supports compression level configuration [#&#8203;10133](https://redirect.github.com/apache/arrow-rs/pull/10133) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([wForget](https://redirect.github.com/wForget)) - fix: write error for dbg output of out of range timestamps [#&#8203;10130](https://redirect.github.com/apache/arrow-rs/pull/10130) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://redirect.github.com/Jefffrey)) - \[Variant] `VariantArray` field API naming [#&#8203;10124](https://redirect.github.com/apache/arrow-rs/pull/10124) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat(arrow\_array): add helper function to create MapArray from `Vec<Option<Vec<(Key, Option<Value>)>>>` for tests [#&#8203;10123](https://redirect.github.com/apache/arrow-rs/pull/10123) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([rluvaton](https://redirect.github.com/rluvaton)) - perf(arrow-ipc): Add writer benchmarks for dictionaries [#&#8203;10122](https://redirect.github.com/apache/arrow-rs/pull/10122) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([JakeDern](https://redirect.github.com/JakeDern)) - feat: support `MapArray` in lengths kernel [#&#8203;10121](https://redirect.github.com/apache/arrow-rs/pull/10121) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - feat: add `OffsetBuffer::subtract` to allow to shift offsets by value [#&#8203;10120](https://redirect.github.com/apache/arrow-rs/pull/10120) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - fix: `Buffer::into_mutable` return error instead of panic for converting owned sliced when not start at 0 and fix returned Mutable length [#&#8203;10118](https://redirect.github.com/apache/arrow-rs/pull/10118) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - chore: update `Bytes` visibility to correctly reflect the actual visibility [#&#8203;10115](https://redirect.github.com/apache/arrow-rs/pull/10115) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://redirect.github.com/rluvaton)) - fix(parquet\_derive): support raw identifiers as column names [#&#8203;10113](https://redirect.github.com/apache/arrow-rs/pull/10113) ([cbmixx](https://redirect.github.com/cbmixx)) - removed clippy ignore statment [#&#8203;10111](https://redirect.github.com/apache/arrow-rs/pull/10111) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [#&#8203;10110](https://redirect.github.com/apache/arrow-rs/pull/10110) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - fix(parquet): return error instead of panicking in pad\_nulls on corrupt input [#&#8203;10108](https://redirect.github.com/apache/arrow-rs/pull/10108) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([thepenguinco](https://redirect.github.com/thepenguinco)) - Minor: Add interleave tests for List\<Decimal128> and List\<Timestamp(tz)> [#&#8203;10099](https://redirect.github.com/apache/arrow-rs/pull/10099) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - Add arrow-flight test coverage for IPC compression [#&#8203;10097](https://redirect.github.com/apache/arrow-rs/pull/10097) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] \[[arrow-flight](https://redirect.github.com/apache/arrow-rs/labels/arrow-flight)] ([alamb](https://redirect.github.com/alamb)) - chore(deps): bump pyspark from 3.3.2 to 3.4.4 in /parquet/pytest [#&#8203;10091](https://redirect.github.com/apache/arrow-rs/pull/10091) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([dependabot\[bot\]](https://redirect.github.com/apps/dependabot)) - refactor(parquet): bundle array reader recursion args into `ReaderArgs` [#&#8203;10089](https://redirect.github.com/apache/arrow-rs/pull/10089) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([HippoBaro](https://redirect.github.com/HippoBaro)) - arrow-buffer: implement Saturating, Checked num-traits for i256 [#&#8203;10088](https://redirect.github.com/apache/arrow-rs/pull/10088) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([theirix](https://redirect.github.com/theirix)) - bench(parquet): add nested list writer benchmarks [#&#8203;10084](https://redirect.github.com/apache/arrow-rs/pull/10084) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([mapleFU](https://redirect.github.com/mapleFU)) - Implement From\<i128> for i256 [#&#8203;10081](https://redirect.github.com/apache/arrow-rs/pull/10081) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([AdamGS](https://redirect.github.com/AdamGS)) - test(parquet): drop confusing `main` reference in page-roundtrip test comment [#&#8203;10072](https://redirect.github.com/apache/arrow-rs/pull/10072) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([adriangb](https://redirect.github.com/adriangb)) - ci: Split miri tests into 4 parallel shards [#&#8203;10067](https://redirect.github.com/apache/arrow-rs/pull/10067) ([AdamGS](https://redirect.github.com/AdamGS)) - Add tests and fix corner cases for Parquet/GeoArrow extension type conversion [#&#8203;10065](https://redirect.github.com/apache/arrow-rs/pull/10065) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([paleolimbot](https://redirect.github.com/paleolimbot)) - Support writing REE arrays directly to Parquet [#&#8203;10064](https://redirect.github.com/apache/arrow-rs/pull/10064) \[[parquet](https://redirect.github.com/apache/arrow-rs/labels/parquet)] ([Rich-T-kid](https://redirect.github.com/Rich-T-kid)) - test(arrow-select): additional tests for inline-view filter fast path (tests for [#&#8203;9755](https://redirect.github.com/apache/arrow-rs/issues/9755)) [#&#8203;10054](https://redirect.github.com/apache/arrow-rs/pull/10054) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - test(arrow-select): add take\_bytes coverage for sliced values and nullable offset overflow [#&#8203;10053](https://redirect.github.com/apache/arrow-rs/pull/10053) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - Consolidate `filter_null_mask` into `FilterPredicate::filter_nulls` [#&#8203;10049](https://redirect.github.com/apache/arrow-rs/pull/10049) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://redirect.github.com/alamb)) - \[Variant] Add `VariantBuilder` values check [#&#8203;10016](https://redirect.github.com/apache/arrow-rs/pull/10016) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - \[Variant] Preserve `UUID` extension type metadata for Parquet writer [#&#8203;10015](https://redirect.github.com/apache/arrow-rs/pull/10015) ([sdf-jkl](https://redirect.github.com/sdf-jkl)) - feat(parquet-variant): add Dictionary and REE variant\_to\_arrow support [#&#8203;10014](https://redirect.github.com/apache/arrow-rs/pull/10014) ([mneetika](https://redirect.github.com/mneetika)) - perf(arrow-ord): Avoid full index materialization for small-limit lexsorts [#&#8203;9991](https://redirect.github.com/apache/arrow-rs/pull/9991) \[[arrow](https://redirect.github.com/apache/arrow-rs/labels/arrow)] ([pchintar](https://redirect.github.com/pchintar)) \* *This Changelog was automatically generated by [github\_changelog\_generator](https://redirect.github.com/github-changelog-generator/github-changelog-generator)* ### [`v58.4.0`](https://redirect.github.com/apache/arrow-rs/releases/tag/58.4.0): arrow 58.4.0 [Compare Source](https://redirect.github.com/apache/arrow-rs/compare/58.3.0...58.4.0) <!--- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ow > āœ‚ **Note** > > PR body was truncated to here. </details> --- ### Configuration šŸ“… **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, on the second Monday and fourth Monday of the month (`* 0-3 * * 1#2,1#4`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ā™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. šŸ‘» **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/vortex-data/vortex). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4MC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvY2hvcmUiXX0=--> --------- Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Robert Kruszewski <github@robertk.io>
develop
2 hours ago

Latest Branches

CodSpeed Performance Gauge
0%
perf(array): gather dict byte values straight into the offset builder#8995
3 hours ago
3e48f58
claude/dict-varbin-append
CodSpeed Performance Gauge
-21%
3 hours ago
8110b99
claude/varbin-builder-bulk-append
CodSpeed Performance Gauge
0%
2 hours ago
6b37b3d
XuQianJin-Stars:feature/opendal-cos
Ā© 2026 CodSpeed Technology
Home Terms Privacy Docs