You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by "hhhizzz (via GitHub)" <gi...@apache.org> on 2026/10/12 03:09:13 UTC
[PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
hhhizzz opened a new pull request, #11517:
URL: https://github.com/apache/arrow-rs/pull/11517
# Which issue does this PR close?
- Closes #11516.
# Rationale for this change
A corrupt RLE / bit-packed hybrid run header can decode to any 64-bit value. `RleDecoder::reload` multiplied the bit-packed group count by 8 in `i64` without a check, so reading such a page panics with `attempt to multiply with overflow` when overflow checks are enabled (e.g. debug builds). Otherwise the length wraps, decoding continues with a bogus run length, and the read fails later with an unrelated error or panics elsewhere. `PackedDecoder`, the definition level fast path, parses run headers itself and has the same unchecked multiplication.
# What changes are included in this PR?
- Add `run_len`, which returns the number of values in a run, or an error if it is above 2^31 - 1, the maximum run length allowed by the [Parquet spec](https://github.com/apache/parquet-format/blob/master/Encodings.md#run-length-encoding--bit-packing-hybrid-rle--3). Arrow C++ enforces the same limit.
- Use it in `RleDecoder::reload` and `PackedDecoder::next_rle_block`.
# Are these changes tested?
Yes. `test_run_len_limit` checks that the longest runs allowed by the spec are accepted and that longer ones are rejected, including headers whose length overflows `i64` and headers that are negative as `i64`. `test_packed_decoder_invalid_run_len` covers `PackedDecoder`. Both tests fail without this change.
# Are there any significant user-facing changes?
No.
---
This PR was written with the help of Claude Code and Codex: the fix, the tests and this description were AI-generated.
I have reviewed the change, and it was verified locally, including against the corrupt file that first triggered the panic.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "etseidl (via GitHub)" <gi...@apache.org>.
etseidl commented on PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#issuecomment-6283492409
Thanks @hhhizzz and @HippoBaro
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "etseidl (via GitHub)" <gi...@apache.org>.
etseidl commented on PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#issuecomment-6272099444
It's taking forever for CI to run, but it seems that this change catches the issue earlier in the stack, so now an existing test is failing. (`encodings::rle::tests::test_skip_and_count_long_run`, parquet/src/encodings/rle.rs:888, check added in #11262). @HippoBaro do you think the test can be rewritten or is it no longer necessary?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#issuecomment-6245767877
🤖 Benchmark starting (GKE) | [trigger](https://github.com/apache/arrow-rs/pull/11517#issuecomment-6245767284)
**Target:** arrow_reader
**Sharding factor: 1** (1 workers).
Comparing claude/parquet-rle-run-length-overflow (65fc4d49f425e2cf6efad8d45ff4ddcc0a17d53b) to 0706d31 (merge-base) [diff](https://github.com/apache/arrow-rs/compare/0706d317a94098cec4b631031efcdf16f51ed1f5..65fc4d49f425e2cf6efad8d45ff4ddcc0a17d53b)
<details><summary>Run configuration</summary>
```yaml
run benchmark arrow_reader
env:
BENCH_FILTER: (half|pct) NULL
shards: '4'
shards: 1
```
</details>
Results will be posted when all workers finish.
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
<!-- benchmark-request:6245767284:start:bb8417d3c34fb820214be5d3b81f9ed3 -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "etseidl (via GitHub)" <gi...@apache.org>.
etseidl commented on PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#issuecomment-6245767284
run benchmark arrow_reader
```yaml
env:
BENCH_FILTER: (half|pct) NULL
shards: 4
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "HippoBaro (via GitHub)" <gi...@apache.org>.
HippoBaro commented on code in PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#discussion_r4316538243
##########
parquet/src/encodings/rle.rs:
##########
Review Comment:
@etseidl thanks for the ping. I think the test should be rewritten so it tests the spec conforming boundary instead:
```suggestion
#[test]
fn test_skip_and_count_long_run() {
let mut writer = BitWriter::new(8);
writer.put_vlq_int(MAX_RUN_LEN << 1);
writer.put_aligned(1_u8, 1);
let mut decoder = RleDecoder::new(1);
decoder.set_data(writer.consume().into()).unwrap();
// Must not expand this run or allocate scratch space proportional to it.
assert_eq!(
decoder.skip_and_count(usize::MAX, 1_u64).unwrap(),
(MAX_RUN_LEN as usize, MAX_RUN_LEN as usize)
);
assert_eq!(decoder.skip_and_count(1, 1_u64).unwrap(), (0, 0));
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "etseidl (via GitHub)" <gi...@apache.org>.
etseidl merged PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] fix(parquet): return an error for RLE run lengths above the spec limit [arrow-rs]
Posted by "adriangbot (via GitHub)" <gi...@apache.org>.
adriangbot commented on PR #11517:
URL: https://github.com/apache/arrow-rs/pull/11517#issuecomment-6246010004
🤖 Benchmark completed (GKE) | [trigger](https://github.com/apache/arrow-rs/pull/11517#issuecomment-6245767284)
**Target:** arrow_reader
Comparing claude/parquet-rle-run-length-overflow (65fc4d49f425e2cf6efad8d45ff4ddcc0a17d53b) to 0706d31 (merge-base) [diff](https://github.com/apache/arrow-rs/compare/0706d317a94098cec4b631031efcdf16f51ed1f5..65fc4d49f425e2cf6efad8d45ff4ddcc0a17d53b)
<details><summary>Run configuration</summary>
```yaml
run benchmark arrow_reader
env:
BENCH_FILTER: (half|pct) NULL
shards: '4'
shards: 1
```
</details>
<details><summary>Details</summary>
```
group base changed
----- ---- -------
arrow_array_reader/BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs 1.00 955.7±6.24µs ? ?/sec 1.00 953.8±5.96µs ? ?/sec
arrow_array_reader/BinaryArray/dictionary encoded, optional, half NULLs 1.00 391.6±0.89µs ? ?/sec 1.00 392.8±1.63µs ? ?/sec
arrow_array_reader/BinaryArray/plain encoded, optional, half NULLs 1.00 466.5±3.60µs ? ?/sec 1.01 472.7±3.65µs ? ?/sec
arrow_array_reader/BinaryViewArray/dictionary encoded, optional, half NULLs 1.00 111.7±0.25µs ? ?/sec 1.00 111.3±0.14µs ? ?/sec
arrow_array_reader/BinaryViewArray/plain encoded, optional, half NULLs 1.01 152.1±0.72µs ? ?/sec 1.00 150.6±0.62µs ? ?/sec
arrow_array_reader/BooleanArray/plain encoded, optional, half NULLs 1.01 228.4±2.19µs ? ?/sec 1.00 226.5±1.43µs ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/byte_stream_split encoded, optional, half NULLs 1.00 668.8±1.29µs ? ?/sec 1.01 673.5±1.17µs ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Decimal128Array/plain encoded, optional, half NULLs 1.00 290.5±0.88µs ? ?/sec 1.01 294.8±0.22µs ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/byte_stream_split encoded, optional, half NULLs 1.00 184.6±0.27µs ? ?/sec 1.00 184.6±0.19µs ? ?/sec
arrow_array_reader/FIXED_LEN_BYTE_ARRAY/Float16Array/plain encoded, optional, half NULLs 1.00 148.6±0.20µs ? ?/sec 1.00 148.0±0.33µs ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/byte_stream_split encoded, optional, half NULLs 1.03 525.6±31.99µs ? ?/sec 1.00 512.5±0.51µs ? ?/sec
arrow_array_reader/FixedLenByteArray(16)/plain encoded, optional, half NULLs 1.00 131.2±0.16µs ? ?/sec 1.00 131.8±0.19µs ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/byte_stream_split encoded, optional, half NULLs 1.00 129.9±0.19µs ? ?/sec 1.00 129.9±0.12µs ? ?/sec
arrow_array_reader/FixedLenByteArray(2)/plain encoded, optional, half NULLs 1.00 93.4±0.11µs ? ?/sec 1.00 93.5±0.09µs ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/byte_stream_split encoded, optional, half NULLs 1.00 200.6±0.19µs ? ?/sec 1.00 201.2±0.17µs ? ?/sec
arrow_array_reader/FixedLenByteArray(4)/plain encoded, optional, half NULLs 1.01 128.5±0.09µs ? ?/sec 1.00 127.8±0.43µs ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/byte_stream_split encoded, optional, half NULLs 1.00 271.1±0.34µs ? ?/sec 1.00 272.2±0.34µs ? ?/sec
arrow_array_reader/FixedLenByteArray(8)/plain encoded, optional, half NULLs 1.00 123.9±0.13µs ? ?/sec 1.00 124.4±0.17µs ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed skip, optional, half NULLs 1.00 88.3±0.14µs ? ?/sec 1.02 89.6±0.27µs ? ?/sec
arrow_array_reader/INT32/Decimal128Array/binary packed, optional, half NULLs 1.00 145.5±0.43µs ? ?/sec 1.01 146.8±0.28µs ? ?/sec
arrow_array_reader/INT32/Decimal128Array/byte_stream_split encoded, optional, half NULLs 1.00 108.4±0.37µs ? ?/sec 1.00 108.6±0.19µs ? ?/sec
arrow_array_reader/INT32/Decimal128Array/dictionary encoded, optional, half NULLs 1.00 126.3±0.20µs ? ?/sec 1.01 127.4±0.19µs ? ?/sec
arrow_array_reader/INT32/Decimal128Array/plain encoded, optional, half NULLs 1.00 105.4±0.13µs ? ?/sec 1.01 106.5±0.17µs ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed skip, optional, half NULLs 1.00 84.8±0.10µs ? ?/sec 1.00 84.8±0.09µs ? ?/sec
arrow_array_reader/INT64/Decimal128Array/binary packed, optional, half NULLs 1.00 142.4±0.16µs ? ?/sec 1.00 141.8±0.18µs ? ?/sec
arrow_array_reader/INT64/Decimal128Array/byte_stream_split encoded, optional, half NULLs 1.00 126.4±0.20µs ? ?/sec 1.00 126.6±0.29µs ? ?/sec
arrow_array_reader/INT64/Decimal128Array/dictionary encoded, optional, half NULLs 1.00 130.7±0.21µs ? ?/sec 1.00 130.5±0.13µs ? ?/sec
arrow_array_reader/INT64/Decimal128Array/plain encoded, optional, half NULLs 1.01 112.0±0.43µs ? ?/sec 1.00 111.0±0.15µs ? ?/sec
arrow_array_reader/Int16Array/binary packed skip, optional, half NULLs 1.00 70.5±0.19µs ? ?/sec 1.02 72.0±0.19µs ? ?/sec
arrow_array_reader/Int16Array/binary packed, optional, half NULLs 1.00 111.4±0.34µs ? ?/sec 1.02 113.1±0.50µs ? ?/sec
arrow_array_reader/Int16Array/byte_stream_split encoded, optional, half NULLs 1.00 75.2±0.21µs ? ?/sec 1.02 76.8±0.15µs ? ?/sec
arrow_array_reader/Int16Array/dictionary encoded, optional, half NULLs 1.00 93.2±0.21µs ? ?/sec 1.01 94.1±0.14µs ? ?/sec
arrow_array_reader/Int16Array/plain encoded, optional, half NULLs 1.00 71.9±0.21µs ? ?/sec 1.02 73.2±0.16µs ? ?/sec
arrow_array_reader/Int32Array/binary packed skip, optional, half NULLs 1.00 69.5±1.14µs ? ?/sec 1.02 70.5±0.31µs ? ?/sec
arrow_array_reader/Int32Array/binary packed, optional, half NULLs 1.00 108.4±0.99µs ? ?/sec 1.01 109.9±0.37µs ? ?/sec
arrow_array_reader/Int32Array/byte_stream_split encoded, optional, half NULLs 1.00 71.6±0.18µs ? ?/sec 1.01 72.4±0.24µs ? ?/sec
arrow_array_reader/Int32Array/dictionary encoded, optional, half NULLs 1.00 88.7±0.17µs ? ?/sec 1.02 90.3±0.22µs ? ?/sec
arrow_array_reader/Int32Array/plain encoded, optional, half NULLs 1.00 68.4±0.18µs ? ?/sec 1.01 69.0±0.16µs ? ?/sec
arrow_array_reader/Int64Array/binary packed skip, optional, half NULLs 1.00 66.1±0.08µs ? ?/sec 1.00 66.4±0.12µs ? ?/sec
arrow_array_reader/Int64Array/binary packed, optional, half NULLs 1.00 105.0±0.13µs ? ?/sec 1.00 105.4±0.18µs ? ?/sec
arrow_array_reader/Int64Array/byte_stream_split encoded, optional, half NULLs 1.00 89.4±0.11µs ? ?/sec 1.00 89.0±0.16µs ? ?/sec
arrow_array_reader/Int64Array/dictionary encoded, optional, half NULLs 1.00 93.2±0.15µs ? ?/sec 1.00 93.3±0.19µs ? ?/sec
arrow_array_reader/Int64Array/plain encoded, optional, half NULLs 1.00 74.5±0.11µs ? ?/sec 1.00 74.3±0.16µs ? ?/sec
arrow_array_reader/Int8Array/binary packed skip, optional, half NULLs 1.00 70.4±0.18µs ? ?/sec 1.02 71.8±0.10µs ? ?/sec
arrow_array_reader/Int8Array/binary packed, optional, half NULLs 1.00 111.9±0.27µs ? ?/sec 1.00 112.3±0.77µs ? ?/sec
arrow_array_reader/Int8Array/byte_stream_split encoded, optional, half NULLs 1.00 74.7±0.22µs ? ?/sec 1.00 74.8±0.22µs ? ?/sec
arrow_array_reader/Int8Array/dictionary encoded, optional, half NULLs 1.00 92.8±0.30µs ? ?/sec 1.00 93.1±0.17µs ? ?/sec
arrow_array_reader/Int8Array/plain encoded, optional, half NULLs 1.00 72.0±0.16µs ? ?/sec 1.00 72.0±0.16µs ? ?/sec
arrow_array_reader/ListArray/Fixed32List/90pct NULLs 1.00 882.2±1.48µs ? ?/sec 1.03 912.1±0.96µs ? ?/sec
arrow_array_reader/ListArray/Fixed32List/99pct NULLs 1.02 448.9±4.26µs ? ?/sec 1.00 439.9±0.87µs ? ?/sec
arrow_array_reader/ListArray/Fixed32List/half NULLs 1.00 2.2±0.00ms ? ?/sec 1.02 2.2±0.01ms ? ?/sec
arrow_array_reader/ListArray/Int32List/90pct NULLs 1.00 865.0±0.86µs ? ?/sec 1.04 900.9±0.97µs ? ?/sec
arrow_array_reader/ListArray/Int32List/99pct NULLs 1.03 451.6±4.59µs ? ?/sec 1.00 438.7±0.43µs ? ?/sec
arrow_array_reader/ListArray/Int32List/half NULLs 1.00 1952.4±2.43µs ? ?/sec 1.02 1982.5±4.37µs ? ?/sec
arrow_array_reader/ListArray/StringList/90pct NULLs 1.00 925.2±1.17µs ? ?/sec 1.04 965.1±0.75µs ? ?/sec
arrow_array_reader/ListArray/StringList/99pct NULLs 1.02 453.2±3.94µs ? ?/sec 1.00 444.3±0.46µs ? ?/sec
arrow_array_reader/ListArray/StringList/half NULLs 1.00 3.0±0.01ms ? ?/sec 1.03 3.1±0.01ms ? ?/sec
arrow_array_reader/StringArray/dictionary encoded, optional, half NULLs 1.02 394.8±0.64µs ? ?/sec 1.00 385.8±0.69µs ? ?/sec
arrow_array_reader/StringArray/plain encoded, optional, half NULLs 1.01 499.0±2.53µs ? ?/sec 1.00 493.4±2.10µs ? ?/sec
arrow_array_reader/StringDictionary/dictionary encoded, optional, half NULLs 1.00 245.1±0.55µs ? ?/sec 1.00 244.3±0.84µs ? ?/sec
arrow_array_reader/StringViewArray/dictionary encoded, optional, half NULLs 1.00 111.4±0.10µs ? ?/sec 1.01 112.2±0.16µs ? ?/sec
arrow_array_reader/StringViewArray/plain encoded, optional, half NULLs 1.00 186.4±0.25µs ? ?/sec 1.01 188.5±2.38µs ? ?/sec
arrow_array_reader/UInt16Array/binary packed skip, optional, half NULLs 1.00 73.2±0.18µs ? ?/sec 1.01 74.2±0.09µs ? ?/sec
arrow_array_reader/UInt16Array/binary packed, optional, half NULLs 1.00 115.0±0.28µs ? ?/sec 1.01 116.4±0.25µs ? ?/sec
arrow_array_reader/UInt16Array/byte_stream_split encoded, optional, half NULLs 1.00 75.2±0.20µs ? ?/sec 1.00 74.9±0.18µs ? ?/sec
arrow_array_reader/UInt16Array/dictionary encoded, optional, half NULLs 1.00 93.1±0.24µs ? ?/sec 1.01 94.0±0.15µs ? ?/sec
arrow_array_reader/UInt16Array/plain encoded, optional, half NULLs 1.00 72.1±0.19µs ? ?/sec 1.00 72.5±0.17µs ? ?/sec
arrow_array_reader/UInt32Array/binary packed skip, optional, half NULLs 1.00 69.2±0.14µs ? ?/sec 1.02 70.4±0.33µs ? ?/sec
arrow_array_reader/UInt32Array/binary packed, optional, half NULLs 1.00 108.6±0.52µs ? ?/sec 1.02 110.2±0.33µs ? ?/sec
arrow_array_reader/UInt32Array/byte_stream_split encoded, optional, half NULLs 1.00 71.3±0.12µs ? ?/sec 1.02 72.5±0.13µs ? ?/sec
arrow_array_reader/UInt32Array/dictionary encoded, optional, half NULLs 1.00 88.7±0.16µs ? ?/sec 1.01 90.0±0.15µs ? ?/sec
arrow_array_reader/UInt32Array/plain encoded, optional, half NULLs 1.00 68.7±0.16µs ? ?/sec 1.02 69.9±0.14µs ? ?/sec
arrow_array_reader/UInt64Array/binary packed skip, optional, half NULLs 1.00 65.8±0.09µs ? ?/sec 1.00 66.0±0.30µs ? ?/sec
arrow_array_reader/UInt64Array/binary packed, optional, half NULLs 1.00 105.3±0.13µs ? ?/sec 1.00 104.9±0.21µs ? ?/sec
arrow_array_reader/UInt64Array/byte_stream_split encoded, optional, half NULLs 1.00 89.2±0.11µs ? ?/sec 1.00 89.4±0.19µs ? ?/sec
arrow_array_reader/UInt64Array/dictionary encoded, optional, half NULLs 1.00 92.8±0.16µs ? ?/sec 1.01 93.3±0.26µs ? ?/sec
arrow_array_reader/UInt64Array/plain encoded, optional, half NULLs 1.02 75.0±0.11µs ? ?/sec 1.00 73.8±0.14µs ? ?/sec
arrow_array_reader/UInt8Array/binary packed skip, optional, half NULLs 1.00 72.8±0.20µs ? ?/sec 1.01 73.7±0.13µs ? ?/sec
arrow_array_reader/UInt8Array/binary packed, optional, half NULLs 1.00 113.9±0.26µs ? ?/sec 1.01 115.5±0.45µs ? ?/sec
arrow_array_reader/UInt8Array/byte_stream_split encoded, optional, half NULLs 1.00 75.4±0.28µs ? ?/sec 1.00 75.0±0.19µs ? ?/sec
arrow_array_reader/UInt8Array/dictionary encoded, optional, half NULLs 1.00 92.9±0.21µs ? ?/sec 1.01 93.8±0.21µs ? ?/sec
arrow_array_reader/UInt8Array/plain encoded, optional, half NULLs 1.00 71.9±0.17µs ? ?/sec 1.00 72.2±0.15µs ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, mandatory struct, optional data, half NULLs 1.00 68.8±0.16µs ? ?/sec 1.01 69.7±0.14µs ? ?/sec
arrow_array_reader/struct/Int32Array/plain encoded, optional struct, optional data, half NULLs 1.00 128.9±0.17µs ? ?/sec 1.01 130.2±0.19µs ? ?/sec
```
</details>
<details><summary>Per-runner information</summary>
<details><summary>arrow_reader — shard 1/1</summary>
**Node:** gk3-benchmark-cluster-nap-nf2aivsl-5c18c309-vslr
**Instance:** c4a-highmem-16 (12 vCPU / 65 GiB)
**uname:**
```text
Linux bench-c6245767284-3563-pl5kl 6.12.94+ #1 SMP Fri Aug 21 08:00:16 UTC 2026 aarch64 GNU/Linux
```
**BENCH_COMMAND:**
```sh
cargo bench --features=arrow,async,test_common,experimental,object_store --bench arrow_reader
```
<details><summary>CPU Details (lscpu)</summary>
```text
Architecture: aarch64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Vendor ID: ARM
Model name: Neoverse-V2
Model: 1
Thread(s) per core: 1
Core(s) per cluster: 16
Socket(s): -
Cluster(s): 1
Stepping: r0p1
BogoMIPS: 2000.00
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache: 1 MiB (16 instances)
L1i cache: 1 MiB (16 instances)
L2 cache: 32 MiB (16 instances)
L3 cache: 80 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-15
Vulnerability Gather data sampling: Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Mitigation; CSV2, BHB
Vulnerability Srbds: Not affected
Vulnerability Tsa: Not affected
Vulnerability Tsx async abort: Not affected
Vulnerability Vmscape: Not affected
```
</details>
<details><summary>Resource Usage</summary>
**base (merge-base)**
| Metric | Value |
|--------|-------|
| Wall time | 845.2s |
| Peak memory | 123.6 MiB |
| Avg memory | 52.0 MiB |
| CPU user | 842.6s |
| CPU sys | 0.1s |
| Peak spill | 0 B |
**branch**
| Metric | Value |
|--------|-------|
| Wall time | 840.2s |
| Peak memory | 124.5 MiB |
| Avg memory | 53.1 MiB |
| CPU user | 837.9s |
| CPU sys | 0.1s |
| Peak spill | 0 B |
</details>
</details>
</details>
---
[File an issue](https://github.com/adriangb/datafusion-benchmarking/issues) against this benchmark runner
<!-- benchmark-request:6245767284:finish:5ef24492b6ef45aa2591b5c35aa96553 -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org