Skip to content

[DO NOT MERGE] Test apache/arrow-rs#10852 (adaptive RowSelection construction) with ClickBench - #25422

Draft
alamb wants to merge 16 commits into
apache:mainfrom
alamb:adaptive-selector-arrow-pr-10852
Draft

alamb wants to merge 16 commits into
apache:mainfrom
alamb:adaptive-selector-arrow-pr-10852

Conversation

@alamb

@alamb alamb commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

DO NOT MERGE: this PR exists only to run the DataFusion benchmarks against a pre-release arrow-rs branch.

Rationale for this change

apache/arrow-rs#10852 changes how the parquet reader builds RowSelections under the Auto row selection policy when predicate results are scattered. I want to measure its effect on ClickBench with pushdown_filters enabled.

What changes are included in this PR?

Based on #25335 (arrow/parquet 60.0.0), plus a [patch.crates-io] section pinning all arrow/parquet crates to https://github.com/alamb/arrow-rs/tree/adaptive-selector-60.0.0, which is the 60.0.0 tag with the four commits from apache/arrow-rs#10852 cherry-picked on top (commit d4079008).

What is the testing strategy for this PR?

Benchmarks only. Local results for ClickBench q24 with datafusion.execution.parquet.pushdown_filters = true (5 runs x 15 executions each, profiling profile) are in the review at apache/arrow-rs#10852 (review): roughly 10% faster with the arrow-rs change.

Are there any user-facing changes?

No.

alamb and others added 16 commits August 14, 2026 13:00
Pin arrow/parquet crates to arrow-rs rev 901e69f913bb8a1738009218898959e8f4cd7ec8
via [patch.crates-io] until arrow 60.0.0 is released.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tore 0.14, etc)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts:
#	datafusion/core/tests/user_defined/user_defined_aggregates.rs
#	datafusion/core/tests/user_defined/user_defined_scalar_functions.rs
#	datafusion/core/tests/user_defined/user_defined_window_functions.rs
#	datafusion/ffi/src/udaf/mod.rs
#	datafusion/optimizer/src/optimizer.rs
…anges

- data_buffers() now returns &Arc<[Buffer]> and GenericByteViewArray::new_unchecked
  takes Arc<[Buffer]>
- ParquetMetaData::column_index()/offset_index() replaced by page_index()
  returning the new PageIndex struct
- PageIndex cannot be constructed outside the parquet crate
  (apache/arrow-rs#10824): patch serialized index
  bytes in statistics_order_tests and drop the synthetic page index from
  single_column_metadata until upstream exposes a constructor
- New ColumnOrder/SortOrder variants: INT96 now reports
  SortOrder::INT96_TIMESTAMP (still treated as untrusted for min/max), and
  ColumnOrder union fields 2/3 are now recognized
# Conflicts:
#	Cargo.lock
#	datafusion/common/src/dfschema.rs
#	datafusion/physical-expr/src/planner.rs
- Use PageIndexBuilder (apache/arrow-rs#10842) to restore the page index
  tests in statistics_order_tests.rs
- Update RunEndEncoded Display expectation (apache/arrow-rs#10840)
- Update decimal formatting expectation (apache/arrow-rs#10869)
- Update memory size expectations

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Resolved conflicts in Cargo.lock and
datafusion/physical-expr/src/scalar_subquery.rs (arrow 60 field
metadata conversion combined with main's destructuring).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…or-60.0.0 @ d4079008)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@alamb

This comment was marked as outdated.

@github-actions github-actions Bot added documentation Improvements or additions to documentation sql SQL Planner logical-expr Logical plan and expressions physical-expr Changes to the physical-expr crates optimizer Optimizer rules core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) catalog Related to the catalog crate common Related to common crate execution Related to the execution crate proto Related to proto crate functions Changes to functions implementation datasource Changes to the datasource crate labels Sep 17, 2026
@github-actions github-actions Bot added ffi Changes to the ffi crate physical-plan Changes to the physical-plan crate labels Sep 17, 2026
@alamb

alamb commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_pushdown

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5719091158-2407-bz6vv 6.12.94+ #1 SMP Tue Aug 4 08:44:15 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
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

Comparing adaptive-selector-arrow-pr-10852 (a8cb182) to 140c7c5 (merge-base) diff

Run configuration
run benchmark clickbench_pushdown

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing adaptive-selector-arrow-pr-10852 (a8cb182) to 140c7c5 (merge-base) diff

Run configuration
run benchmark clickbench_pushdown
CPU Details (lscpu)
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

Comparing HEAD and adaptive-selector-arrow-pr-10852
--------------------
Benchmark clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ adaptive-selector-arrow-pr-10852 ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.23 ms │                          1.24 ms │     no change │
│ QQuery 1  │   12.28 ms │                         12.18 ms │     no change │
│ QQuery 2  │   37.49 ms │                         36.71 ms │     no change │
│ QQuery 3  │   31.19 ms │                         31.41 ms │     no change │
│ QQuery 4  │  231.00 ms │                        230.70 ms │     no change │
│ QQuery 5  │  280.25 ms │                        278.59 ms │     no change │
│ QQuery 6  │    1.30 ms │                          1.30 ms │     no change │
│ QQuery 7  │   16.01 ms │                         15.83 ms │     no change │
│ QQuery 8  │  343.61 ms │                        343.21 ms │     no change │
│ QQuery 9  │  481.23 ms │                        473.79 ms │     no change │
│ QQuery 10 │   95.43 ms │                         89.96 ms │ +1.06x faster │
│ QQuery 11 │  105.89 ms │                         99.89 ms │ +1.06x faster │
│ QQuery 12 │  303.09 ms │                        291.13 ms │     no change │
│ QQuery 13 │  420.69 ms │                        401.09 ms │     no change │
│ QQuery 14 │  319.55 ms │                        309.80 ms │     no change │
│ QQuery 15 │  278.95 ms │                        281.83 ms │     no change │
│ QQuery 16 │  624.21 ms │                        633.62 ms │     no change │
│ QQuery 17 │  637.44 ms │                        640.57 ms │     no change │
│ QQuery 18 │ 1294.89 ms │                       1292.01 ms │     no change │
│ QQuery 19 │   29.16 ms │                         29.01 ms │     no change │
│ QQuery 20 │  520.43 ms │                        523.65 ms │     no change │
│ QQuery 21 │  567.36 ms │                        554.09 ms │     no change │
│ QQuery 22 │  914.77 ms │                        905.82 ms │     no change │
│ QQuery 23 │  117.69 ms │                        115.57 ms │     no change │
│ QQuery 24 │   36.86 ms │                         33.05 ms │ +1.12x faster │
│ QQuery 25 │  140.65 ms │                        124.08 ms │ +1.13x faster │
│ QQuery 26 │   47.82 ms │                         45.09 ms │ +1.06x faster │
│ QQuery 27 │  549.69 ms │                        546.60 ms │     no change │
│ QQuery 28 │ 2949.97 ms │                       2995.37 ms │     no change │
│ QQuery 29 │   42.01 ms │                         41.36 ms │     no change │
│ QQuery 30 │  317.24 ms │                        306.09 ms │     no change │
│ QQuery 31 │  294.04 ms │                        278.57 ms │ +1.06x faster │
│ QQuery 32 │  941.92 ms │                        961.75 ms │     no change │
│ QQuery 33 │ 1495.82 ms │                       1488.83 ms │     no change │
│ QQuery 34 │ 1522.08 ms │                       1545.42 ms │     no change │
│ QQuery 35 │  295.98 ms │                        300.57 ms │     no change │
│ QQuery 36 │   68.09 ms │                         68.54 ms │     no change │
│ QQuery 37 │   37.36 ms │                         37.38 ms │     no change │
│ QQuery 38 │   34.82 ms │                         35.49 ms │     no change │
│ QQuery 39 │  128.92 ms │                        145.37 ms │  1.13x slower │
│ QQuery 40 │   18.04 ms │                         17.85 ms │     no change │
│ QQuery 41 │   17.07 ms │                         16.86 ms │     no change │
│ QQuery 42 │   15.03 ms │                         14.53 ms │     no change │
└───────────┴────────────┴──────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 16618.56ms │
│ Total Time (adaptive-selector-arrow-pr-10852)   │ 16595.82ms │
│ Average Time (HEAD)                             │   386.48ms │
│ Average Time (adaptive-selector-arrow-pr-10852) │   385.95ms │
│ Queries Faster                                  │          6 │
│ Queries Slower                                  │          1 │
│ Queries with No Change                          │         36 │
│ Queries with Failure                            │          0 │
└─────────────────────────────────────────────────┴────────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and adaptive-selector-arrow-pr-10852
--------------------
Benchmark clickbench_pushdown.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃      adaptive-selector-arrow-pr-10852 ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.23 / 4.09 ±5.57 / 15.24 ms │          1.24 / 4.06 ±5.49 / 15.03 ms │     no change │
│ QQuery 1  │        12.28 / 12.70 ±0.24 / 12.96 ms │        12.18 / 12.27 ±0.09 / 12.38 ms │     no change │
│ QQuery 2  │        37.49 / 37.90 ±0.28 / 38.35 ms │        36.71 / 36.95 ±0.16 / 37.20 ms │     no change │
│ QQuery 3  │        31.19 / 31.80 ±0.68 / 33.11 ms │        31.41 / 31.83 ±0.44 / 32.60 ms │     no change │
│ QQuery 4  │     231.00 / 234.81 ±2.34 / 238.29 ms │     230.70 / 235.85 ±4.27 / 240.93 ms │     no change │
│ QQuery 5  │     280.25 / 285.43 ±4.58 / 291.67 ms │     278.59 / 282.71 ±3.10 / 285.92 ms │     no change │
│ QQuery 6  │           1.30 / 1.44 ±0.23 / 1.88 ms │           1.30 / 1.46 ±0.22 / 1.88 ms │     no change │
│ QQuery 7  │        16.01 / 16.31 ±0.22 / 16.68 ms │        15.83 / 15.98 ±0.10 / 16.11 ms │     no change │
│ QQuery 8  │     343.61 / 345.22 ±3.01 / 351.24 ms │     343.21 / 346.14 ±2.60 / 350.04 ms │     no change │
│ QQuery 9  │     481.23 / 487.43 ±6.77 / 497.81 ms │    473.79 / 490.36 ±12.84 / 507.13 ms │     no change │
│ QQuery 10 │       95.43 / 99.38 ±6.93 / 113.21 ms │        89.96 / 91.32 ±1.03 / 93.15 ms │ +1.09x faster │
│ QQuery 11 │     105.89 / 107.01 ±0.87 / 108.34 ms │      99.89 / 101.20 ±0.93 / 102.78 ms │ +1.06x faster │
│ QQuery 12 │     303.09 / 308.79 ±5.59 / 318.94 ms │     291.13 / 299.76 ±6.26 / 307.55 ms │     no change │
│ QQuery 13 │    420.69 / 444.43 ±15.71 / 469.98 ms │    401.09 / 416.53 ±16.38 / 447.10 ms │ +1.07x faster │
│ QQuery 14 │     319.55 / 326.16 ±7.08 / 335.19 ms │     309.80 / 313.63 ±5.88 / 325.35 ms │     no change │
│ QQuery 15 │     278.95 / 287.67 ±6.97 / 297.10 ms │     281.83 / 296.33 ±9.90 / 308.04 ms │     no change │
│ QQuery 16 │     624.21 / 637.99 ±9.51 / 647.22 ms │     633.62 / 644.45 ±7.99 / 655.54 ms │     no change │
│ QQuery 17 │     637.44 / 647.86 ±9.68 / 665.49 ms │     640.57 / 649.72 ±6.13 / 658.46 ms │     no change │
│ QQuery 18 │ 1294.89 / 1324.30 ±33.87 / 1374.40 ms │ 1292.01 / 1333.19 ±27.53 / 1377.88 ms │     no change │
│ QQuery 19 │        29.16 / 29.61 ±0.51 / 30.54 ms │        29.01 / 29.44 ±0.31 / 29.97 ms │     no change │
│ QQuery 20 │    520.43 / 532.57 ±16.48 / 565.03 ms │    523.65 / 540.04 ±14.36 / 565.39 ms │     no change │
│ QQuery 21 │    567.36 / 579.02 ±13.05 / 604.26 ms │     554.09 / 568.05 ±9.89 / 580.26 ms │     no change │
│ QQuery 22 │     914.77 / 920.69 ±5.48 / 930.10 ms │     905.82 / 911.63 ±8.21 / 927.67 ms │     no change │
│ QQuery 23 │     117.69 / 124.60 ±7.51 / 138.92 ms │    115.57 / 124.20 ±10.36 / 144.05 ms │     no change │
│ QQuery 24 │        36.86 / 39.40 ±4.89 / 49.18 ms │        33.05 / 34.51 ±0.87 / 35.69 ms │ +1.14x faster │
│ QQuery 25 │     140.65 / 144.71 ±4.68 / 153.53 ms │     124.08 / 129.76 ±5.29 / 139.78 ms │ +1.12x faster │
│ QQuery 26 │        47.82 / 50.16 ±3.32 / 56.66 ms │        45.09 / 45.49 ±0.35 / 46.01 ms │ +1.10x faster │
│ QQuery 27 │    549.69 / 568.78 ±17.68 / 595.01 ms │    546.60 / 560.25 ±10.12 / 576.01 ms │     no change │
│ QQuery 28 │ 2949.97 / 2996.96 ±23.55 / 3010.58 ms │ 2995.37 / 3005.54 ±12.39 / 3029.50 ms │     no change │
│ QQuery 29 │        42.01 / 45.36 ±6.46 / 58.28 ms │        41.36 / 46.94 ±9.64 / 66.09 ms │     no change │
│ QQuery 30 │     317.24 / 323.45 ±4.83 / 330.13 ms │    306.09 / 319.72 ±14.01 / 346.62 ms │     no change │
│ QQuery 31 │     294.04 / 299.81 ±7.87 / 315.15 ms │     278.57 / 288.07 ±7.49 / 298.57 ms │     no change │
│ QQuery 32 │    941.92 / 964.44 ±21.07 / 994.60 ms │   961.75 / 978.08 ±17.41 / 1007.87 ms │     no change │
│ QQuery 33 │ 1495.82 / 1509.69 ±10.55 / 1522.67 ms │ 1488.83 / 1550.68 ±54.58 / 1622.41 ms │     no change │
│ QQuery 34 │  1522.08 / 1535.09 ±7.54 / 1541.41 ms │ 1545.42 / 1562.28 ±20.83 / 1603.31 ms │     no change │
│ QQuery 35 │    295.98 / 327.31 ±31.89 / 372.68 ms │    300.57 / 326.61 ±30.47 / 373.28 ms │     no change │
│ QQuery 36 │       68.09 / 80.33 ±11.19 / 95.04 ms │        68.54 / 75.63 ±3.97 / 80.35 ms │ +1.06x faster │
│ QQuery 37 │        37.36 / 41.92 ±3.09 / 45.92 ms │        37.38 / 42.01 ±3.47 / 46.13 ms │     no change │
│ QQuery 38 │        34.82 / 40.63 ±7.53 / 53.72 ms │        35.49 / 38.85 ±1.93 / 40.87 ms │     no change │
│ QQuery 39 │     128.92 / 146.22 ±9.17 / 154.28 ms │     145.37 / 151.61 ±5.55 / 160.89 ms │     no change │
│ QQuery 40 │        18.04 / 19.00 ±1.57 / 22.11 ms │        17.85 / 18.36 ±0.35 / 18.82 ms │     no change │
│ QQuery 41 │        17.07 / 18.40 ±1.50 / 21.30 ms │        16.86 / 19.38 ±4.54 / 28.46 ms │  1.05x slower │
│ QQuery 42 │        15.03 / 17.79 ±4.91 / 27.59 ms │        14.53 / 16.74 ±3.65 / 24.01 ms │ +1.06x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 16996.71ms │
│ Total Time (adaptive-selector-arrow-pr-10852)   │ 16987.59ms │
│ Average Time (HEAD)                             │   395.27ms │
│ Average Time (adaptive-selector-arrow-pr-10852) │   395.06ms │
│ Queries Faster                                  │          8 │
│ Queries Slower                                  │          1 │
│ Queries with No Change                          │         34 │
│ Queries with Failure                            │          0 │
└─────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_pushdown — base (merge-base)

Metric Value
Wall time 90.0s
Peak memory 11.2 GiB
Avg memory 4.6 GiB
CPU user 866.3s
CPU sys 57.9s
Peak spill 0 B

clickbench_pushdown — branch

Metric Value
Wall time 90.0s
Peak memory 12.2 GiB
Avg memory 4.4 GiB
CPU user 861.4s
CPU sys 61.5s
Peak spill 0 B

File an issue against this benchmark runner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

catalog Related to the catalog crate common Related to common crate core Core DataFusion crate datasource Changes to the datasource crate documentation Improvements or additions to documentation execution Related to the execution crate ffi Changes to the ffi crate functions Changes to functions implementation logical-expr Logical plan and expressions optimizer Optimizer rules physical-expr Changes to the physical-expr crates physical-plan Changes to the physical-plan crate proto Related to proto crate sql SQL Planner sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants