Skip to content

refactor: make file-statistics cache keys schema-aware - #23201

Merged
kosiew merged 8 commits into
apache:mainfrom
Phoenix500526:issue/23072
Jul 7, 2026
Merged

refactor: make file-statistics cache keys schema-aware#23201
kosiew merged 8 commits into
apache:mainfrom
Phoenix500526:issue/23072

Conversation

@Phoenix500526

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

File statistics are computed against a specific file_schema (their
column_statistics are positional, one per column), but the file-statistics
cache was keyed only by table and path. Reading the same path under a different
schema could therefore reuse statistics whose columns no longer line up,
panicking during statistics projection.

#22950 worked around this by bypassing the file-statistics cache entirely for
anonymous explicit-schema reads — correct, but it gave up cache reuse for them
(every such read recomputes statistics). #23072 asks to make the cache itself
schema-aware so those reads can reuse the cache safely instead of skipping it.

What changes are included in this PR?

  • Add SchemaFingerprint — the per-column (name, data_type, nullable) of a
    file_schema, in order — and FileStatisticsCacheKey { table, path, schema },
    and key the file-statistics cache on it (FileStatisticsCache is now
    dyn Cache<FileStatisticsCacheKey, CachedFileMetadata>).
  • ListingTable::do_collect_statistics_and_ordering builds the key with the
    file_schema fingerprint and uses the shared cache directly. The fix: isolate anonymous file statistics cache #22950
    bypass (statistics_cache helper / schema_source-based skip) is removed:
    different schemas now land in distinct entries (no stale cross-schema reuse),
    while a repeated read of the same schema reuses its entry.
  • The fingerprint deliberately excludes field/schema metadata (it cannot
    affect statistics, and including it would needlessly fragment the cache) and
    partition columns (partition statistics are computed separately, outside this
    cache).
  • Table-drop invalidation is unchanged: drop_table_entries matches on
    CacheKey::table_ref(), which still returns the table, so all schema variants
    for a dropped table are removed together.
  • The list-files cache continues to key on TableScopedPath.

Are these changes tested?

Yes.

  • Updated the fix: isolate anonymous file statistics cache #22950 regression test
    (anonymous_parquet_stats_cache_with_explicit_wider_schema): the wider
    explicit-schema read now lands in its own cache entry (2 entries, was 1 under
    the bypass) with correct statistics and no panic, and a repeated read of that
    schema is served from the cache (a cache hit, no new entry).
  • Added unit tests for SchemaFingerprint: it distinguishes nullability and
    field order, and ignores field/schema metadata.
  • cargo test for the file_statistics integration module and the
    datafusion-execution cache tests (including drop_table_entries) pass, along
    with cargo fmt --all and cargo clippy --all-targets --all-features -- -D warnings for the touched crates.

Are there any user-facing changes?

No change to query results, physical plans, or the serialized (proto) wire
format; file statistics are computed exactly as before.

One public API change (please add the api change label): the
FileStatisticsCache type alias now uses FileStatisticsCacheKey instead of
TableScopedPath as its key. Code that constructed keys for this cache directly
must switch to FileStatisticsCacheKey. SchemaFingerprint and
FileStatisticsCacheKey are newly public; TableScopedPath remains (still used
by the list-files cache). cargo-semver-checks will flag the key-type change,
which is expected.

@github-actionsgithub-actionsBot added core Core DataFusion crate catalog Related to the catalog crate execution Related to the execution crate labels Jun 26, 2026

@mkleenmkleen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for working on this. I left a few comments.

Comment threaddatafusion/execution/src/cache/mod.rs
Comment threaddatafusion/execution/src/cache/mod.rs Outdated
@adriangb

Copy link
Copy Markdown
Contributor

I am going to run the wide_schema benchmarks here. I am afraid that any change touching schemas is susceptible to introduce O(num_columns^X) operations.

@adriangb

Copy link
Copy Markdown
Contributor

run bechmark wide_schema

env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@adriangb

Copy link
Copy Markdown
Contributor

run bechmark wide_schema

@adriangb

Copy link
Copy Markdown
Contributor

run bechmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@mkleen

Copy link
Copy Markdown
Contributor

run bechmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

This is cool, i did not know this.

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@adriangb

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

@adriangb

Copy link
Copy Markdown
Contributor

run bechmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

This is cool, i did not know this.

Yep the idea here is to run baseline w/o cache and this branch w/ cache. Orthogonal to this PR but I want to see how it looks like.

Unfortunately I had a typo in benchmark, sorry for the noise.

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4808656966-702-b4kn8 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (a13e269) to ff677c4 (merge-base) diff using: wide_schema
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4808667999-703-92qlv 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (a13e269) to ff677c4 (merge-base) diff using: wide_schema
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4808669794-704-whlqh 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (a13e269) to ff677c4 (merge-base) diff using: wide_schema
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)

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.00 79.8±0.27ms ? ?/sec 1.00 79.8±0.18ms ? ?/sec
wide_schema/Q01_wide 1.00 1025.8±5.54ms ? ?/sec 1.06 1087.0±3.82ms ? ?/sec
wide_schema/Q02_narrow 1.00 5.9±0.09ms ? ?/sec 1.05 6.2±0.05ms ? ?/sec
wide_schema/Q02_wide 1.00 899.4±3.46ms ? ?/sec 1.08 975.5±2.01ms ? ?/sec
wide_schema/Q03_narrow 1.00 14.8±0.23ms ? ?/sec 1.02 15.0±0.24ms ? ?/sec
wide_schema/Q03_wide 1.00 912.9±6.88ms ? ?/sec 1.07 977.0±3.51ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.2±0.24ms ? ?/sec 1.01 37.6±0.20ms ? ?/sec
wide_schema/Q04_wide 1.00 990.8±6.47ms ? ?/sec 1.08 1068.2±6.72ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time980.2s
Peak memory1.2 GiB
Avg memory98.4 MiB
CPU user399.6s
CPU sys58.7s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time975.2s
Peak memory1.2 GiB
Avg memory108.3 MiB
CPU user386.8s
CPU sys50.4s
Peak spill0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.00 80.3±0.44ms ? ?/sec 1.00 80.5±0.49ms ? ?/sec
wide_schema/Q01_wide 1.00 1016.6±5.73ms ? ?/sec 1.07 1085.9±8.10ms ? ?/sec
wide_schema/Q02_narrow 1.00 5.8±0.05ms ? ?/sec 1.05 6.1±0.06ms ? ?/sec
wide_schema/Q02_wide 1.00 893.2±5.93ms ? ?/sec 1.10 984.1±7.66ms ? ?/sec
wide_schema/Q03_narrow 1.00 14.5±0.26ms ? ?/sec 1.02 14.8±0.23ms ? ?/sec
wide_schema/Q03_wide 1.00 900.3±5.99ms ? ?/sec 1.11 997.2±11.39ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.0±0.20ms ? ?/sec 1.02 37.8±0.23ms ? ?/sec
wide_schema/Q04_wide 1.00 983.9±3.82ms ? ?/sec 1.08 1060.0±7.98ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time980.2s
Peak memory1.1 GiB
Avg memory107.6 MiB
CPU user398.4s
CPU sys58.8s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time980.2s
Peak memory1.2 GiB
Avg memory104.2 MiB
CPU user383.6s
CPU sys51.3s
Peak spill0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.03 84.0±1.81ms ? ?/sec 1.00 81.3±1.46ms ? ?/sec
wide_schema/Q01_wide 1.00 1041.9±15.17ms ? ?/sec 1.07 1112.7±14.96ms ? ?/sec
wide_schema/Q02_narrow 1.00 6.2±0.11ms ? ?/sec 1.03 6.4±0.14ms ? ?/sec
wide_schema/Q02_wide 1.00 921.0±21.09ms ? ?/sec 1.09 1007.2±20.47ms ? ?/sec
wide_schema/Q03_narrow 1.00 14.8±0.35ms ? ?/sec 1.05 15.6±0.17ms ? ?/sec
wide_schema/Q03_wide 1.00 938.0±23.35ms ? ?/sec 1.17 1097.5±26.47ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.8±0.62ms ? ?/sec 1.04 39.1±0.90ms ? ?/sec
wide_schema/Q04_wide 1.00 994.7±8.18ms ? ?/sec 1.09 1080.9±23.55ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time970.2s
Peak memory1.1 GiB
Avg memory97.1 MiB
CPU user381.4s
CPU sys52.1s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time995.2s
Peak memory1.1 GiB
Avg memory109.4 MiB
CPU user384.8s
CPU sys51.6s
Peak spill0 B

File an issue against this benchmark runner

@github-actionsgithub-actionsBot added the common Related to common crate label Jun 26, 2026
@mkleen

mkleen commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Unfortunately we have regressions in the benchmarks:

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.00 80.3±0.44ms ? ?/sec 1.00 80.5±0.49ms ? ?/sec
wide_schema/Q01_wide 1.00 1016.6±5.73ms ? ?/sec 1.07 1085.9±8.10ms ? ?/sec
wide_schema/Q02_narrow 1.00 5.8±0.05ms ? ?/sec 1.05 6.1±0.06ms ? ?/sec
wide_schema/Q02_wide 1.00 893.2±5.93ms ? ?/sec 1.10 984.1±7.66ms ? ?/sec
wide_schema/Q03_narrow 1.00 14.5±0.26ms ? ?/sec 1.02 14.8±0.23ms ? ?/sec
wide_schema/Q03_wide 1.00 900.3±5.99ms ? ?/sec 1.11 997.2±11.39ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.0±0.20ms ? ?/sec 1.02 37.8±0.23ms ? ?/sec
wide_schema/Q04_wide 1.00 983.9±3.82ms ? ?/sec 1.08 1060.0±7.98ms ? ?/sec

@mkleen

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@mkleen

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4810951539-710-d6x86 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (9618f88) to ff677c4 (merge-base) diff using: wide_schema
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4810954479-711-k7mss 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (9618f88) to ff677c4 (merge-base) diff using: wide_schema
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)

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.00 79.8±0.36ms ? ?/sec 1.02 81.4±0.53ms ? ?/sec
wide_schema/Q01_wide 1.00 1017.6±3.63ms ? ?/sec 1.02 1042.3±4.84ms ? ?/sec
wide_schema/Q02_narrow 1.00 6.2±0.10ms ? ?/sec 1.00 6.2±0.08ms ? ?/sec
wide_schema/Q02_wide 1.00 901.5±3.36ms ? ?/sec 1.02 916.6±6.25ms ? ?/sec
wide_schema/Q03_narrow 1.00 15.5±0.24ms ? ?/sec 1.00 15.5±0.26ms ? ?/sec
wide_schema/Q03_wide 1.00 912.1±5.79ms ? ?/sec 1.02 933.7±4.82ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.1±0.12ms ? ?/sec 1.00 37.1±0.13ms ? ?/sec
wide_schema/Q04_wide 1.00 1008.7±5.74ms ? ?/sec 1.02 1029.2±9.65ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time640.1s
Peak memory1.2 GiB
Avg memory152.6 MiB
CPU user382.9s
CPU sys52.9s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time975.2s
Peak memory1.1 GiB
Avg memory104.0 MiB
CPU user381.7s
CPU sys52.0s
Peak spill0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.01 81.3±0.44ms ? ?/sec 1.00 80.1±0.38ms ? ?/sec
wide_schema/Q01_wide 1.00 1033.7±7.03ms ? ?/sec 1.02 1054.8±6.46ms ? ?/sec
wide_schema/Q02_narrow 1.01 6.0±0.07ms ? ?/sec 1.00 6.0±0.08ms ? ?/sec
wide_schema/Q02_wide 1.00 911.3±4.97ms ? ?/sec 1.02 933.8±4.85ms ? ?/sec
wide_schema/Q03_narrow 1.00 15.0±0.30ms ? ?/sec 1.00 15.1±0.09ms ? ?/sec
wide_schema/Q03_wide 1.00 923.9±5.68ms ? ?/sec 1.02 942.4±5.85ms ? ?/sec
wide_schema/Q04_narrow 1.01 38.0±0.23ms ? ?/sec 1.00 37.5±0.28ms ? ?/sec
wide_schema/Q04_wide 1.00 1004.1±5.02ms ? ?/sec 1.01 1018.3±6.65ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time645.1s
Peak memory1.1 GiB
Avg memory147.8 MiB
CPU user379.2s
CPU sys53.5s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time960.2s
Peak memory1.1 GiB
Avg memory100.0 MiB
CPU user384.2s
CPU sys52.7s
Peak spill0 B

File an issue against this benchmark runner

File statistics are computed against a specific `file_schema`, but the
file-statistics cache was keyed only by table and path. Reading the same path
under a different schema could reuse statistics whose `column_statistics` no
longer line up, panicking during statistics projection. apache#22950 worked around
this by bypassing the cache entirely for anonymous explicit-schema reads, at
the cost of losing cache reuse for them.
Introduce a `SchemaFingerprint` (per-column name, type and nullability, derived
from `file_schema`) and a `FileStatisticsCacheKey { table, path, schema }`, and
key the file-statistics cache on it. Different schemas now get distinct entries
(no stale cross-schema reuse) while a repeated read of the same schema reuses
its entry, so the apache#22950 bypass is removed and anonymous explicit-schema reads
cache safely again.
- The fingerprint excludes field/schema metadata (cannot affect statistics) and
partition columns (their statistics are computed separately).
- Table-drop invalidation is unchanged: drop_table_entries matches on
CacheKey::table_ref(), which still returns the table, so all schema variants
for a table are removed together.
- The list-files cache continues to key on TableScopedPath.
Closesapache#23072.
Signed-off-by: Jiawei Zhao <Phoenix500526@163.com>
…apSize
Add a `DFHeapSize` impl for 3-tuples (mirroring the existing 2-tuple one) so
`Vec<(String, DataType, bool)>` accounts for its heap automatically, letting
`SchemaFingerprint::heap_size` delegate to it instead of computing the size by
hand. Also update the `test_statistics_cache` unit test to key on
`FileStatisticsCacheKey` so it matches the real file-statistics cache.
Signed-off-by: Jiawei Zhao <Phoenix500526@163.com>
Keep the file-statistics cache keyed by table and path while
storing the file-schema fingerprint in the cached metadata value.
This preserves schema correctness without changing the public cache
key type.
Signed-off-by: Jiawei Zhao <Phoenix500526@163.com>
@github-actions

github-actionsBot commented Jul 1, 2026

Copy link
Copy Markdown

Thank you for opening this pull request!

Reviewer note: cargo-semver-checks reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

Details
 Cloning apache/main
Building datafusion v54.0.0 (current)
Built [ 100.718s] (current)
Parsing datafusion v54.0.0 (current)
Parsed [ 0.033s] (current)
Building datafusion v54.0.0 (baseline)
Built [ 100.974s] (baseline)
Parsing datafusion v54.0.0 (baseline)
Parsed [ 0.034s] (baseline)
Checking datafusion v54.0.0 -> v54.0.0 (no change; assume patch)
Checked [ 0.859s] 223 checks: 223 pass, 30 skip
Summary no semver update required
Finished [ 204.560s] datafusion
Building datafusion-catalog-listing v54.0.0 (current)
Built [ 43.842s] (current)
Parsing datafusion-catalog-listing v54.0.0 (current)
Parsed [ 0.012s] (current)
Building datafusion-catalog-listing v54.0.0 (baseline)
Built [ 44.703s] (baseline)
Parsing datafusion-catalog-listing v54.0.0 (baseline)
Parsed [ 0.012s] (baseline)
Checking datafusion-catalog-listing v54.0.0 -> v54.0.0 (no change; assume patch)
Checked [ 0.109s] 223 checks: 223 pass, 30 skip
Summary no semver update required
Finished [ 90.066s] datafusion-catalog-listing
Building datafusion-common v54.0.0 (current)
Built [ 32.556s] (current)
Parsing datafusion-common v54.0.0 (current)
Parsed [ 0.061s] (current)
Building datafusion-common v54.0.0 (baseline)
Built [ 32.423s] (baseline)
Parsing datafusion-common v54.0.0 (baseline)
Parsed [ 0.061s] (baseline)
Checking datafusion-common v54.0.0 -> v54.0.0 (no change; assume patch)
Checked [ 0.951s] 223 checks: 223 pass, 30 skip
Summary no semver update required
Finished [ 67.912s] datafusion-common
Building datafusion-execution v54.0.0 (current)
Built [ 29.196s] (current)
Parsing datafusion-execution v54.0.0 (current)
Parsed [ 0.023s] (current)
Building datafusion-execution v54.0.0 (baseline)
Built [ 29.187s] (baseline)
Parsing datafusion-execution v54.0.0 (baseline)
Parsed [ 0.024s] (baseline)
Checking datafusion-execution v54.0.0 -> v54.0.0 (no change; assume patch)
Checked [ 0.332s] 223 checks: 221 pass, 2 fail, 0 warn, 30 skip
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CachedFileMetadata.schema_fingerprint in /home/runner/work/datafusion/datafusion/datafusion/execution/src/cache/cache_manager.rs:101
--- failure method_parameter_count_changed: pub method parameter count changed ---
Description:
A publicly-visible method now takes a different number of parameters, not counting the receiver (self) parameter.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/method_parameter_count_changed.ron
Failed in:
datafusion_execution::cache::cache_manager::CachedFileMetadata::new takes 3 parameters in /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/29eb218ca8a229e0f3215fb041a6f8becb4e6db0/datafusion/execution/src/cache/cache_manager.rs:107, but now takes 4 parameters in /home/runner/work/datafusion/datafusion/datafusion/execution/src/cache/cache_manager.rs:110
datafusion_execution::cache::cache_manager::CachedFileMetadata::is_valid_for takes 1 parameters in /home/runner/work/datafusion/datafusion/target/semver-checks/git-apache_main/29eb218ca8a229e0f3215fb041a6f8becb4e6db0/datafusion/execution/src/cache/cache_manager.rs:122, but now takes 2 parameters in /home/runner/work/datafusion/datafusion/datafusion/execution/src/cache/cache_manager.rs:127
Summary semver requires new major version: 2 major and 0 minor checks failed
Finished [ 60.185s] datafusion-execution

@github-actionsgithub-actionsBot added the auto detected api change Auto detected API change label Jul 1, 2026
@mkleen

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@mkleen

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

baseline:
env:
DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4851059287-764-hvcks 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (985b8f3) to d58e0c6 (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4851061669-765-llklf 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (985b8f3) to d58e0c6 (merge-base) diff using: wide_schema
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)

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 issue_23072
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query ┃ HEAD ┃ issue_23072 ┃ Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0 │ 1.23 / 3.99 ±5.47 / 14.93 ms │ 1.27 / 4.02 ±5.40 / 14.81 ms │ no change │
│ QQuery 1 │ 12.98 / 13.24 ±0.25 / 13.62 ms │ 12.67 / 12.84 ±0.11 / 12.97 ms │ no change │
│ QQuery 2 │ 36.03 / 36.41 ±0.37 / 36.93 ms │ 35.78 / 36.15 ±0.28 / 36.42 ms │ no change │
│ QQuery 3 │ 31.08 / 32.12 ±0.55 / 32.61 ms │ 30.42 / 30.67 ±0.18 / 30.88 ms │ no change │
│ QQuery 4 │ 1649.65 / 1750.78 ±82.62 / 1868.33 ms │ 1689.81 / 1751.40 ±65.21 / 1869.59 ms │ no change │
│ QQuery 5 │ 1643.37 / 1704.54 ±69.58 / 1837.83 ms │ 1812.34 / 1899.68 ±71.10 / 1992.65 ms │ 1.11x slower │
│ QQuery 6 │ 1.27 / 1.42 ±0.23 / 1.87 ms │ 1.31 / 1.48 ±0.25 / 1.97 ms │ no change │
│ QQuery 7 │ 14.21 / 20.53 ±12.46 / 45.45 ms │ 13.62 / 13.80 ±0.11 / 13.92 ms │ +1.49x faster │
│ QQuery 8 │ 1986.44 / 2082.42 ±69.70 / 2193.24 ms │ 2032.28 / 2116.79 ±89.00 / 2263.80 ms │ no change │
│ QQuery 9 │ 467.70 / 490.94 ±18.57 / 510.33 ms │ 475.58 / 505.07 ±18.89 / 527.22 ms │ no change │
│ QQuery 10 │ 80.82 / 82.44 ±1.14 / 83.72 ms │ 75.07 / 77.33 ±1.15 / 78.29 ms │ +1.07x faster │
│ QQuery 11 │ 97.49 / 105.19 ±13.42 / 131.97 ms │ 90.71 / 96.31 ±8.32 / 112.77 ms │ +1.09x faster │
│ QQuery 12 │ 1617.66 / 1737.18 ±154.19 / 2011.59 ms │ 1795.44 / 1969.00 ±99.89 / 2075.27 ms │ 1.13x slower │
│ QQuery 13 │ 548.42 / 700.26 ±141.55 / 887.09 ms │ 550.90 / 699.54 ±92.55 / 809.54 ms │ no change │
│ QQuery 14 │ 544.85 / 564.35 ±19.31 / 600.82 ms │ 541.21 / 557.75 ±18.81 / 594.43 ms │ no change │
│ QQuery 15 │ 1987.63 / 2025.47 ±43.19 / 2087.29 ms │ 1971.44 / 2034.33 ±42.19 / 2099.57 ms │ no change │
│ QQuery 16 │ 4208.49 / 4337.37 ±104.44 / 4509.71 ms │ 4203.57 / 4379.49 ±150.62 / 4637.17 ms │ no change │
│ QQuery 17 │ 4112.09 / 4368.72 ±151.60 / 4550.03 ms │ 4308.23 / 4386.25 ±73.01 / 4515.52 ms │ no change │
│ QQuery 18 │ 18343.21 / 18535.48 ±200.52 / 18807.01 ms │ 18357.24 / 18682.53 ±211.25 / 18923.66 ms │ no change │
│ QQuery 19 │ 28.16 / 28.70 ±0.55 / 29.47 ms │ 27.88 / 38.51 ±17.20 / 72.32 ms │ 1.34x slower │
│ QQuery 20 │ 514.74 / 530.52 ±22.52 / 573.29 ms │ 511.83 / 521.09 ±8.42 / 533.56 ms │ no change │
│ QQuery 21 │ 511.48 / 519.35 ±4.56 / 524.75 ms │ 524.33 / 534.55 ±5.66 / 541.80 ms │ no change │
│ QQuery 22 │ 978.59 / 1022.83 ±30.81 / 1066.09 ms │ 978.29 / 988.10 ±7.63 / 997.18 ms │ no change │
│ QQuery 23 │ 3014.40 / 3084.86 ±69.91 / 3216.53 ms │ 3046.88 / 3090.33 ±45.37 / 3168.19 ms │ no change │
│ QQuery 24 │ 41.24 / 53.47 ±15.14 / 79.30 ms │ 40.96 / 49.47 ±16.67 / 82.81 ms │ +1.08x faster │
│ QQuery 25 │ 110.13 / 111.33 ±0.90 / 112.89 ms │ 111.35 / 113.64 ±2.78 / 119.09 ms │ no change │
│ QQuery 26 │ 41.53 / 43.94 ±2.71 / 47.76 ms │ 41.74 / 42.14 ±0.44 / 42.91 ms │ no change │
│ QQuery 27 │ 664.85 / 676.06 ±6.15 / 682.42 ms │ 676.60 / 681.25 ±3.57 / 685.41 ms │ no change │
│ QQuery 28 │ 3523.00 / 3739.36 ±188.92 / 4002.10 ms │ 3398.36 / 3644.95 ±226.16 / 4069.56 ms │ no change │
│ QQuery 29 │ 42.23 / 48.93 ±12.35 / 73.62 ms │ 40.43 / 42.52 ±3.08 / 48.55 ms │ +1.15x faster │
│ QQuery 30 │ 578.29 / 594.14 ±14.34 / 612.57 ms │ 544.70 / 573.50 ±22.98 / 614.67 ms │ no change │
│ QQuery 31 │ 286.91 / 296.86 ±10.65 / 316.36 ms │ 313.53 / 330.50 ±18.56 / 363.91 ms │ 1.11x slower │
│ QQuery 32 │ 951.49 / 978.33 ±19.82 / 1011.15 ms │ 986.32 / 1060.31 ±53.48 / 1135.57 ms │ 1.08x slower │
│ QQuery 33 │ 26654.01 / 28910.61 ±1812.18 / 31558.80 ms │ 28632.23 / 29368.01 ±666.23 / 30339.71 ms │ no change │
│ QQuery 34 │ 27736.18 / 28298.48 ±406.38 / 28973.62 ms │ 26864.53 / 29085.06 ±1742.33 / 30766.08 ms │ no change │
│ QQuery 35 │ 1096.23 / 1188.58 ±108.59 / 1400.28 ms │ 1058.74 / 1210.51 ±198.67 / 1588.31 ms │ no change │
│ QQuery 36 │ 165.48 / 184.08 ±21.11 / 224.58 ms │ 154.10 / 175.40 ±15.99 / 200.95 ms │ no change │
│ QQuery 37 │ 38.22 / 44.15 ±10.86 / 65.83 ms │ 38.47 / 50.17 ±13.73 / 69.33 ms │ 1.14x slower │
│ QQuery 38 │ 42.43 / 43.09 ±0.55 / 44.04 ms │ 42.51 / 44.22 ±1.37 / 45.65 ms │ no change │
│ QQuery 39 │ 178.90 / 193.67 ±13.67 / 217.47 ms │ 186.95 / 194.46 ±5.19 / 199.53 ms │ no change │
│ QQuery 40 │ 14.25 / 14.63 ±0.30 / 14.92 ms │ 14.31 / 14.88 ±0.47 / 15.50 ms │ no change │
│ QQuery 41 │ 13.75 / 14.02 ±0.26 / 14.43 ms │ 13.51 / 13.82 ±0.27 / 14.16 ms │ no change │
│ QQuery 42 │ 12.90 / 13.26 ±0.27 / 13.70 ms │ 12.88 / 13.07 ±0.12 / 13.21 ms │ no change │
└───────────┴────────────────────────────────────────────┴────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 109226.12ms │
│ Total Time (issue_23072) │ 111134.87ms │
│ Average Time (HEAD) │ 2540.14ms │
│ Average Time (issue_23072) │ 2584.53ms │
│ Queries Faster │ 5 │
│ Queries Slower │ 6 │
│ Queries with No Change │ 32 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

MetricValue
Wall time550.1s
Peak memory12.0 GiB
Avg memory6.5 GiB
CPU user4918.3s
CPU sys322.5s
Peak spill0 B

clickbench_partitioned — branch

MetricValue
Wall time560.1s
Peak memory12.1 GiB
Avg memory6.5 GiB
CPU user4956.7s
CPU sys319.6s
Peak spill0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.00 79.5±0.18ms ? ?/sec 1.00 79.6±0.19ms ? ?/sec
wide_schema/Q01_wide 1.00 1015.3±3.72ms ? ?/sec 1.00 1013.6±5.80ms ? ?/sec
wide_schema/Q02_narrow 1.01 5.8±0.08ms ? ?/sec 1.00 5.8±0.08ms ? ?/sec
wide_schema/Q02_wide 1.00 891.4±3.52ms ? ?/sec 1.00 890.1±1.80ms ? ?/sec
wide_schema/Q03_narrow 1.01 14.4±0.14ms ? ?/sec 1.00 14.3±0.20ms ? ?/sec
wide_schema/Q03_wide 1.00 895.7±4.49ms ? ?/sec 1.01 903.1±2.87ms ? ?/sec
wide_schema/Q04_narrow 1.01 37.3±0.21ms ? ?/sec 1.00 37.0±0.13ms ? ?/sec
wide_schema/Q04_wide 1.01 994.3±4.70ms ? ?/sec 1.00 985.4±2.62ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time640.1s
Peak memory1.1 GiB
Avg memory160.4 MiB
CPU user405.6s
CPU sys59.4s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time920.2s
Peak memory1.1 GiB
Avg memory106.0 MiB
CPU user400.0s
CPU sys58.9s
Peak spill0 B

File an issue against this benchmark runner

@mkleen

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4852067698-768-p4z46 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (985b8f3) to d58e0c6 (merge-base) diff using: clickbench_partitioned
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)

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 issue_23072
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query ┃ HEAD ┃ issue_23072 ┃ Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0 │ 1.24 / 4.12 ±5.61 / 15.33 ms │ 1.28 / 4.14 ±5.58 / 15.30 ms │ no change │
│ QQuery 1 │ 12.62 / 13.20 ±0.31 / 13.53 ms │ 13.29 / 13.35 ±0.05 / 13.44 ms │ no change │
│ QQuery 2 │ 37.69 / 38.40 ±0.81 / 39.90 ms │ 36.17 / 36.55 ±0.31 / 37.11 ms │ no change │
│ QQuery 3 │ 30.96 / 31.64 ±0.70 / 32.98 ms │ 31.06 / 31.68 ±0.34 / 32.05 ms │ no change │
│ QQuery 4 │ 1714.29 / 1746.04 ±27.34 / 1796.12 ms │ 1763.36 / 1788.54 ±21.49 / 1822.28 ms │ no change │
│ QQuery 5 │ 1571.87 / 1757.61 ±106.95 / 1892.75 ms │ 1642.84 / 1751.52 ±119.46 / 1983.81 ms │ no change │
│ QQuery 6 │ 1.30 / 1.45 ±0.22 / 1.89 ms │ 1.30 / 1.47 ±0.24 / 1.94 ms │ no change │
│ QQuery 7 │ 14.34 / 14.56 ±0.14 / 14.74 ms │ 14.73 / 14.82 ±0.10 / 14.96 ms │ no change │
│ QQuery 8 │ 2023.91 / 2065.80 ±34.15 / 2116.79 ms │ 2086.04 / 2122.21 ±56.16 / 2233.84 ms │ no change │
│ QQuery 9 │ 507.54 / 531.76 ±20.45 / 569.51 ms │ 462.50 / 510.36 ±29.44 / 552.37 ms │ no change │
│ QQuery 10 │ 79.04 / 81.44 ±3.34 / 88.05 ms │ 77.51 / 88.21 ±17.21 / 122.53 ms │ 1.08x slower │
│ QQuery 11 │ 91.33 / 99.59 ±12.99 / 125.39 ms │ 87.35 / 89.84 ±1.68 / 91.88 ms │ +1.11x faster │
│ QQuery 12 │ 1605.60 / 1724.41 ±79.85 / 1845.09 ms │ 1690.92 / 1818.20 ±65.61 / 1867.39 ms │ 1.05x slower │
│ QQuery 13 │ 463.15 / 635.32 ±149.26 / 862.59 ms │ 472.16 / 740.54 ±165.96 / 931.91 ms │ 1.17x slower │
│ QQuery 14 │ 565.21 / 569.11 ±2.74 / 572.82 ms │ 535.72 / 569.04 ±23.95 / 608.06 ms │ no change │
│ QQuery 15 │ 1892.03 / 1952.74 ±72.36 / 2074.14 ms │ 1886.81 / 1936.03 ±43.16 / 2006.95 ms │ no change │
│ QQuery 16 │ 4144.74 / 4469.12 ±195.52 / 4725.84 ms │ 4196.60 / 4416.77 ±165.98 / 4642.64 ms │ no change │
│ QQuery 17 │ 4099.81 / 4408.11 ±163.33 / 4588.98 ms │ 4446.56 / 4486.46 ±32.47 / 4530.24 ms │ no change │
│ QQuery 18 │ 18250.79 / 18588.21 ±503.27 / 19590.18 ms │ 17909.75 / 18302.75 ±316.06 / 18671.73 ms │ no change │
│ QQuery 19 │ 28.36 / 29.51 ±0.98 / 31.29 ms │ 28.65 / 28.89 ±0.31 / 29.50 ms │ no change │
│ QQuery 20 │ 517.25 / 527.69 ±8.17 / 537.80 ms │ 515.52 / 528.51 ±8.54 / 539.08 ms │ no change │
│ QQuery 21 │ 521.92 / 525.58 ±2.86 / 530.28 ms │ 514.22 / 518.56 ±4.86 / 527.88 ms │ no change │
│ QQuery 22 │ 991.13 / 1001.67 ±7.44 / 1014.11 ms │ 990.42 / 995.78 ±3.16 / 1000.12 ms │ no change │
│ QQuery 23 │ 3079.88 / 3106.31 ±23.01 / 3138.58 ms │ 3080.04 / 3118.87 ±29.33 / 3151.51 ms │ no change │
│ QQuery 24 │ 41.54 / 66.36 ±28.28 / 113.60 ms │ 41.63 / 48.46 ±7.20 / 57.68 ms │ +1.37x faster │
│ QQuery 25 │ 111.94 / 112.64 ±0.51 / 113.23 ms │ 111.28 / 112.76 ±1.27 / 114.98 ms │ no change │
│ QQuery 26 │ 42.17 / 43.32 ±1.79 / 46.87 ms │ 41.90 / 42.44 ±0.72 / 43.85 ms │ no change │
│ QQuery 27 │ 679.69 / 684.32 ±4.39 / 692.62 ms │ 675.50 / 679.50 ±3.15 / 683.73 ms │ no change │
│ QQuery 28 │ 3521.77 / 3641.27 ±105.93 / 3799.39 ms │ 3559.15 / 3739.09 ±186.79 / 4016.28 ms │ no change │
│ QQuery 29 │ 41.34 / 41.67 ±0.25 / 42.10 ms │ 41.07 / 41.67 ±0.52 / 42.58 ms │ no change │
│ QQuery 30 │ 562.66 / 585.14 ±16.47 / 609.21 ms │ 568.44 / 593.37 ±19.65 / 617.62 ms │ no change │
│ QQuery 31 │ 294.28 / 317.30 ±14.13 / 336.49 ms │ 298.91 / 310.29 ±10.61 / 328.08 ms │ no change │
│ QQuery 32 │ 1030.14 / 1082.63 ±44.01 / 1149.74 ms │ 1002.67 / 1022.84 ±19.61 / 1055.80 ms │ +1.06x faster │
│ QQuery 33 │ 26497.16 / 28747.99 ±1432.36 / 30924.53 ms │ 25559.35 / 28390.95 ±1728.23 / 31009.38 ms │ no change │
│ QQuery 34 │ 27366.22 / 30830.49 ±2170.57 / 33956.56 ms │ 25878.77 / 28682.12 ±2195.43 / 30751.40 ms │ +1.07x faster │
│ QQuery 35 │ 1072.28 / 1157.77 ±118.20 / 1387.90 ms │ 1103.06 / 1182.07 ±129.62 / 1440.82 ms │ no change │
│ QQuery 36 │ 158.54 / 172.50 ±9.32 / 187.29 ms │ 159.06 / 168.26 ±4.74 / 172.12 ms │ no change │
│ QQuery 37 │ 37.92 / 56.08 ±33.02 / 122.05 ms │ 37.85 / 54.23 ±23.87 / 101.70 ms │ no change │
│ QQuery 38 │ 42.15 / 45.88 ±2.66 / 50.30 ms │ 42.51 / 46.19 ±1.96 / 48.26 ms │ no change │
│ QQuery 39 │ 189.78 / 208.48 ±25.10 / 258.11 ms │ 186.28 / 202.80 ±20.83 / 243.17 ms │ no change │
│ QQuery 40 │ 14.59 / 15.12 ±0.37 / 15.72 ms │ 14.91 / 15.44 ±0.41 / 16.07 ms │ no change │
│ QQuery 41 │ 14.33 / 14.66 ±0.21 / 14.83 ms │ 14.25 / 14.55 ±0.28 / 15.09 ms │ no change │
│ QQuery 42 │ 13.77 / 13.91 ±0.14 / 14.12 ms │ 13.76 / 13.89 ±0.09 / 14.02 ms │ no change │
└───────────┴────────────────────────────────────────────┴────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 111760.93ms │
│ Total Time (issue_23072) │ 109274.03ms │
│ Average Time (HEAD) │ 2599.09ms │
│ Average Time (issue_23072) │ 2541.26ms │
│ Queries Faster │ 4 │
│ Queries Slower │ 3 │
│ Queries with No Change │ 36 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

MetricValue
Wall time560.1s
Peak memory11.6 GiB
Avg memory6.6 GiB
CPU user4945.0s
CPU sys320.9s
Peak spill0 B

clickbench_partitioned — branch

MetricValue
Wall time550.1s
Peak memory11.7 GiB
Avg memory6.5 GiB
CPU user4960.2s
CPU sys329.8s
Peak spill0 B

File an issue against this benchmark runner

@kosiewkosiew left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Phoenix500526

Thanks for working through the earlier feedback. I think the overall direction is much better, especially keeping TableScopedPath as the cache key and moving schema validation into the cached value. The remaining concern is performance.

Although the schema fingerprint hash is now precomputed, successful cache hits still perform an O(schema width) comparison. Given the reported wide_schema and clickbench_partitioned results, I think it would be good to make the common cache hit path O(1) before merging.

) -> bool {
self.meta.size == current_meta.size
&& self.meta.last_modified == current_meta.last_modified
&& self.schema_fingerprint.as_ref() == current_schema_fingerprint

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is much closer to what I had in mind, but I think there is still one remaining performance issue.

SchemaFingerprint::eq first compares the precomputed hash and then falls back to comparing every column. On a successful cache hit, the hashes match, so we still end up walking the entire Vec<(String, DataType, bool)>. That means schema validation on cache hits is still O(schema width).

The precomputed hash helps reject different schemas cheaply, but it does not make the common successful validation path O(1). That also lines up with the benchmark results. wide_schema is still slightly slower and clickbench_partitioned Q6 still shows a noticeable regression.

Could we make successful validation constant time as well? For example, adding a pointer identity fast path for shared Arc<SchemaFingerprint> values would let the common case avoid the deep comparison while still preserving collision safety.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I added an Arc::ptr_eq fast path for the shared-fingerprint case, while keeping exact equality as a fallback for equivalent fingerprints from different Arc allocations. This keeps collision safety and existing cache reuse behavior, but makes the common successful validation path O(1).

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please help run a benchmark? @kosiew@mkleen

Use Arc pointer identity to avoid deep schema comparison on
common file statistics cache hits. Keep exact equality as a
fallback for equivalent fingerprints built from different
Arc allocations.
Signed-off-by: Jiawei Zhao <Phoenix500526@163.com>
@mkleen

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@mkleen

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4873836253-836-g9bp2 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (ec13f59) to d58e0c6 (merge-base) diff using: wide_schema
Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4873833542-835-2pgcd 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (ec13f59) to d58e0c6 (merge-base) diff using: clickbench_partitioned
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)

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 issue_23072
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query ┃ HEAD ┃ issue_23072 ┃ Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0 │ 1.23 / 3.96 ±5.40 / 14.76 ms │ 1.29 / 4.26 ±5.69 / 15.63 ms │ 1.08x slower │
│ QQuery 1 │ 12.56 / 12.74 ±0.12 / 12.87 ms │ 12.84 / 13.12 ±0.16 / 13.29 ms │ no change │
│ QQuery 2 │ 36.84 / 37.20 ±0.23 / 37.45 ms │ 36.23 / 36.55 ±0.32 / 37.11 ms │ no change │
│ QQuery 3 │ 30.69 / 31.56 ±0.76 / 32.42 ms │ 31.59 / 32.16 ±0.61 / 33.30 ms │ no change │
│ QQuery 4 │ 1693.17 / 1738.48 ±60.86 / 1855.33 ms │ 1673.21 / 1730.54 ±33.23 / 1759.82 ms │ no change │
│ QQuery 5 │ 1679.26 / 1767.71 ±80.89 / 1912.18 ms │ 1627.51 / 1745.53 ±121.32 / 1926.86 ms │ no change │
│ QQuery 6 │ 1.30 / 1.45 ±0.23 / 1.90 ms │ 1.27 / 1.43 ±0.27 / 1.97 ms │ no change │
│ QQuery 7 │ 13.95 / 14.34 ±0.22 / 14.61 ms │ 14.08 / 14.16 ±0.06 / 14.24 ms │ no change │
│ QQuery 8 │ 2024.08 / 2101.78 ±54.85 / 2176.52 ms │ 2043.14 / 2130.90 ±88.52 / 2272.94 ms │ no change │
│ QQuery 9 │ 459.93 / 519.22 ±47.41 / 587.25 ms │ 484.03 / 522.40 ±35.17 / 571.81 ms │ no change │
│ QQuery 10 │ 77.46 / 83.94 ±5.84 / 94.51 ms │ 76.67 / 78.42 ±1.30 / 80.70 ms │ +1.07x faster │
│ QQuery 11 │ 87.24 / 89.72 ±2.38 / 93.79 ms │ 91.24 / 94.95 ±5.43 / 105.59 ms │ 1.06x slower │
│ QQuery 12 │ 1768.87 / 1835.87 ±63.44 / 1953.82 ms │ 1744.14 / 1898.37 ±80.78 / 1979.68 ms │ no change │
│ QQuery 13 │ 463.21 / 664.40 ±146.65 / 900.16 ms │ 438.88 / 613.65 ±127.51 / 822.15 ms │ +1.08x faster │
│ QQuery 14 │ 528.14 / 565.30 ±23.23 / 601.07 ms │ 535.51 / 553.75 ±25.40 / 604.14 ms │ no change │
│ QQuery 15 │ 1896.25 / 2018.24 ±75.37 / 2121.25 ms │ 1877.90 / 1989.68 ±80.19 / 2094.41 ms │ no change │
│ QQuery 16 │ 4142.15 / 4311.62 ±152.29 / 4529.81 ms │ 4191.63 / 4407.83 ±145.10 / 4586.91 ms │ no change │
│ QQuery 17 │ 4216.50 / 4502.62 ±285.89 / 5050.35 ms │ 4292.73 / 4481.12 ±157.82 / 4753.71 ms │ no change │
│ QQuery 18 │ 18007.89 / 18268.35 ±283.02 / 18723.53 ms │ 18119.26 / 18734.43 ±389.08 / 19315.59 ms │ no change │
│ QQuery 19 │ 28.06 / 33.11 ±8.54 / 50.13 ms │ 28.39 / 35.73 ±11.63 / 58.49 ms │ 1.08x slower │
│ QQuery 20 │ 519.93 / 532.68 ±11.27 / 550.60 ms │ 514.37 / 519.07 ±4.77 / 527.11 ms │ no change │
│ QQuery 21 │ 514.65 / 526.24 ±9.88 / 542.21 ms │ 511.35 / 520.99 ±6.08 / 528.88 ms │ no change │
│ QQuery 22 │ 1000.76 / 1018.26 ±10.94 / 1033.62 ms │ 989.47 / 1005.27 ±11.16 / 1020.37 ms │ no change │
│ QQuery 23 │ 3049.90 / 3150.55 ±69.83 / 3230.20 ms │ 3137.72 / 3183.22 ±35.30 / 3217.83 ms │ no change │
│ QQuery 24 │ 42.66 / 46.41 ±4.65 / 54.75 ms │ 40.94 / 42.13 ±1.31 / 44.43 ms │ +1.10x faster │
│ QQuery 25 │ 110.49 / 116.45 ±7.70 / 130.12 ms │ 110.54 / 113.36 ±2.11 / 115.91 ms │ no change │
│ QQuery 26 │ 41.80 / 42.40 ±0.75 / 43.85 ms │ 42.12 / 45.89 ±4.27 / 54.10 ms │ 1.08x slower │
│ QQuery 27 │ 671.59 / 682.06 ±7.17 / 692.32 ms │ 668.85 / 671.56 ±3.69 / 678.77 ms │ no change │
│ QQuery 28 │ 3481.43 / 3644.74 ±188.55 / 4012.74 ms │ 3478.17 / 3736.11 ±150.12 / 3938.72 ms │ no change │
│ QQuery 29 │ 40.39 / 46.87 ±11.68 / 70.22 ms │ 40.11 / 78.39 ±63.91 / 204.72 ms │ 1.67x slower │
│ QQuery 30 │ 564.32 / 624.43 ±69.75 / 756.04 ms │ 559.37 / 593.40 ±21.22 / 624.45 ms │ no change │
│ QQuery 31 │ 289.38 / 307.37 ±11.43 / 324.05 ms │ 288.32 / 306.49 ±12.58 / 323.47 ms │ no change │
│ QQuery 32 │ 971.11 / 1019.83 ±34.48 / 1076.57 ms │ 946.73 / 1004.34 ±40.36 / 1067.42 ms │ no change │
│ QQuery 33 │ 27785.86 / 30548.27 ±2301.40 / 33016.98 ms │ 26730.68 / 28851.23 ±1639.95 / 31651.67 ms │ +1.06x faster │
│ QQuery 34 │ 28648.00 / 29597.23 ±893.84 / 31168.75 ms │ 27403.46 / 29205.92 ±1512.55 / 31833.37 ms │ no change │
│ QQuery 35 │ 991.36 / 1122.67 ±114.67 / 1335.91 ms │ 1100.43 / 1183.59 ±133.79 / 1450.53 ms │ 1.05x slower │
│ QQuery 36 │ 163.29 / 208.25 ±56.66 / 316.16 ms │ 162.38 / 174.82 ±9.46 / 188.91 ms │ +1.19x faster │
│ QQuery 37 │ 39.56 / 44.29 ±6.80 / 57.71 ms │ 37.05 / 52.97 ±25.27 / 103.28 ms │ 1.20x slower │
│ QQuery 38 │ 45.43 / 46.40 ±0.93 / 48.10 ms │ 42.75 / 45.27 ±2.07 / 48.62 ms │ no change │
│ QQuery 39 │ 188.92 / 198.99 ±6.95 / 209.21 ms │ 179.09 / 198.54 ±22.47 / 242.15 ms │ no change │
│ QQuery 40 │ 14.41 / 15.12 ±0.51 / 15.79 ms │ 14.39 / 14.51 ±0.19 / 14.89 ms │ no change │
│ QQuery 41 │ 14.61 / 14.91 ±0.25 / 15.26 ms │ 13.33 / 13.81 ±0.33 / 14.23 ms │ +1.08x faster │
│ QQuery 42 │ 14.06 / 14.19 ±0.09 / 14.29 ms │ 12.89 / 13.31 ±0.27 / 13.63 ms │ +1.07x faster │
└───────────┴────────────────────────────────────────────┴────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 112170.23ms │
│ Total Time (issue_23072) │ 110693.16ms │
│ Average Time (HEAD) │ 2608.61ms │
│ Average Time (issue_23072) │ 2574.26ms │
│ Queries Faster │ 7 │
│ Queries Slower │ 7 │
│ Queries with No Change │ 29 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

MetricValue
Wall time565.1s
Peak memory12.1 GiB
Avg memory6.4 GiB
CPU user4969.7s
CPU sys336.9s
Peak spill0 B

clickbench_partitioned — branch

MetricValue
Wall time555.1s
Peak memory11.9 GiB
Avg memory6.6 GiB
CPU user4959.8s
CPU sys338.9s
Peak spill0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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

group HEAD issue_23072
----- ---- -----------
wide_schema/Q01_narrow 1.01 80.6±0.38ms ? ?/sec 1.00 80.1±0.51ms ? ?/sec
wide_schema/Q01_wide 1.02 1040.5±5.02ms ? ?/sec 1.00 1023.8±5.48ms ? ?/sec
wide_schema/Q02_narrow 1.00 6.0±0.10ms ? ?/sec 1.00 6.0±0.11ms ? ?/sec
wide_schema/Q02_wide 1.00 912.4±7.61ms ? ?/sec 1.00 909.0±7.56ms ? ?/sec
wide_schema/Q03_narrow 1.02 15.4±0.17ms ? ?/sec 1.00 15.1±0.36ms ? ?/sec
wide_schema/Q03_wide 1.00 938.3±8.11ms ? ?/sec 1.00 939.4±10.22ms ? ?/sec
wide_schema/Q04_narrow 1.00 37.6±0.40ms ? ?/sec 1.00 37.5±0.41ms ? ?/sec
wide_schema/Q04_wide 1.00 996.9±6.75ms ? ?/sec 1.01 1001.9±9.94ms ? ?/sec

Resource Usage

wide_schema — base (merge-base)

MetricValue
Wall time640.1s
Peak memory1.1 GiB
Avg memory151.0 MiB
CPU user371.2s
CPU sys52.7s
Peak spill0 B

wide_schema — branch

MetricValue
Wall time935.2s
Peak memory1.1 GiB
Avg memory101.7 MiB
CPU user380.5s
CPU sys53.1s
Peak spill0 B

File an issue against this benchmark runner

@kosiew

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance:c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4875007595-840-csw5t 6.12.85+ #1 SMP Mon May 11 08:17:35 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 issue/23072 (ec13f59) to d58e0c6 (merge-base) diff using: clickbench_partitioned
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)

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 issue_23072
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query ┃ HEAD ┃ issue_23072 ┃ Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0 │ 1.25 / 3.97 ±5.40 / 14.77 ms │ 1.22 / 4.00 ±5.46 / 14.93 ms │ no change │
│ QQuery 1 │ 12.85 / 12.91 ±0.04 / 12.97 ms │ 12.49 / 12.86 ±0.30 / 13.34 ms │ no change │
│ QQuery 2 │ 36.07 / 36.23 ±0.11 / 36.41 ms │ 35.58 / 35.89 ±0.21 / 36.24 ms │ no change │
│ QQuery 3 │ 30.88 / 31.41 ±0.48 / 32.25 ms │ 30.69 / 30.95 ±0.17 / 31.13 ms │ no change │
│ QQuery 4 │ 1617.67 / 1675.04 ±43.23 / 1735.13 ms │ 1621.34 / 1685.19 ±63.10 / 1766.38 ms │ no change │
│ QQuery 5 │ 1616.69 / 1782.39 ±146.90 / 2028.89 ms │ 1708.44 / 1805.84 ±71.79 / 1905.96 ms │ no change │
│ QQuery 6 │ 1.23 / 1.40 ±0.24 / 1.87 ms │ 1.27 / 1.42 ±0.24 / 1.90 ms │ no change │
│ QQuery 7 │ 13.90 / 19.29 ±10.52 / 40.32 ms │ 13.99 / 14.04 ±0.07 / 14.17 ms │ +1.37x faster │
│ QQuery 8 │ 1969.97 / 2057.08 ±55.84 / 2113.04 ms │ 1960.47 / 2014.23 ±39.14 / 2061.41 ms │ no change │
│ QQuery 9 │ 476.11 / 494.61 ±19.70 / 532.60 ms │ 480.53 / 506.50 ±16.19 / 530.68 ms │ no change │
│ QQuery 10 │ 77.41 / 84.92 ±13.38 / 111.65 ms │ 74.96 / 76.96 ±1.06 / 77.80 ms │ +1.10x faster │
│ QQuery 11 │ 87.44 / 89.82 ±2.42 / 94.46 ms │ 86.74 / 90.96 ±3.01 / 95.48 ms │ no change │
│ QQuery 12 │ 1644.10 / 1802.57 ±118.81 / 1999.77 ms │ 1555.69 / 1676.78 ±86.22 / 1788.11 ms │ +1.08x faster │
│ QQuery 13 │ 410.89 / 544.81 ±144.37 / 806.90 ms │ 428.99 / 680.11 ±203.65 / 893.86 ms │ 1.25x slower │
│ QQuery 14 │ 540.94 / 557.31 ±14.74 / 581.53 ms │ 546.88 / 555.23 ±8.20 / 569.47 ms │ no change │
│ QQuery 15 │ 1883.56 / 1942.65 ±46.78 / 1993.64 ms │ 1863.43 / 1940.60 ±41.77 / 1985.10 ms │ no change │
│ QQuery 16 │ 4108.25 / 4353.76 ±206.58 / 4719.00 ms │ 4117.76 / 4219.34 ±88.81 / 4370.33 ms │ no change │
│ QQuery 17 │ 4080.25 / 4169.05 ±57.09 / 4258.54 ms │ 4196.19 / 4280.59 ±114.45 / 4506.55 ms │ no change │
│ QQuery 18 │ 17879.28 / 18425.92 ±327.50 / 18742.55 ms │ 17416.76 / 18098.20 ±563.44 / 18812.11 ms │ no change │
│ QQuery 19 │ 27.96 / 28.56 ±0.52 / 29.25 ms │ 28.13 / 29.08 ±1.47 / 32.01 ms │ no change │
│ QQuery 20 │ 518.89 / 523.94 ±6.46 / 536.53 ms │ 510.20 / 524.59 ±9.12 / 537.02 ms │ no change │
│ QQuery 21 │ 513.70 / 523.51 ±8.77 / 536.43 ms │ 521.87 / 530.44 ±7.60 / 542.09 ms │ no change │
│ QQuery 22 │ 983.89 / 1000.53 ±11.98 / 1017.86 ms │ 988.03 / 998.76 ±6.36 / 1006.29 ms │ no change │
│ QQuery 23 │ 3033.67 / 3067.76 ±21.66 / 3097.74 ms │ 3048.05 / 3082.81 ±21.25 / 3110.74 ms │ no change │
│ QQuery 24 │ 41.17 / 41.73 ±0.68 / 43.05 ms │ 42.56 / 45.91 ±3.34 / 50.61 ms │ 1.10x slower │
│ QQuery 25 │ 110.44 / 119.56 ±9.73 / 137.87 ms │ 111.20 / 112.29 ±1.08 / 114.28 ms │ +1.06x faster │
│ QQuery 26 │ 41.80 / 44.27 ±4.21 / 52.65 ms │ 41.49 / 47.01 ±8.75 / 64.22 ms │ 1.06x slower │
│ QQuery 27 │ 672.05 / 681.36 ±8.26 / 695.86 ms │ 670.77 / 679.45 ±12.21 / 703.29 ms │ no change │
│ QQuery 28 │ 3516.43 / 3605.49 ±156.93 / 3919.07 ms │ 3528.23 / 3661.67 ±114.57 / 3856.39 ms │ no change │
│ QQuery 29 │ 40.44 / 53.07 ±17.98 / 86.77 ms │ 40.00 / 40.48 ±0.44 / 41.17 ms │ +1.31x faster │
│ QQuery 30 │ 550.44 / 564.41 ±13.79 / 590.62 ms │ 551.41 / 574.21 ±21.29 / 611.24 ms │ no change │
│ QQuery 31 │ 299.99 / 306.05 ±5.37 / 315.69 ms │ 282.46 / 291.21 ±8.34 / 302.86 ms │ no change │
│ QQuery 32 │ 940.60 / 969.50 ±26.90 / 1012.44 ms │ 935.37 / 972.72 ±24.55 / 997.53 ms │ no change │
│ QQuery 33 │ 26260.53 / 27583.92 ±1460.56 / 29972.19 ms │ 25992.03 / 28000.01 ±1054.33 / 29048.38 ms │ no change │
│ QQuery 34 │ 27036.02 / 27733.53 ±542.61 / 28689.48 ms │ 24285.16 / 27818.28 ±1916.29 / 29988.25 ms │ no change │
│ QQuery 35 │ 961.07 / 1072.64 ±144.03 / 1355.53 ms │ 970.47 / 1018.75 ±24.85 / 1036.70 ms │ +1.05x faster │
│ QQuery 36 │ 155.37 / 175.26 ±13.61 / 195.36 ms │ 160.41 / 172.42 ±11.57 / 192.58 ms │ no change │
│ QQuery 37 │ 36.90 / 40.29 ±3.63 / 47.30 ms │ 36.78 / 39.82 ±4.03 / 47.01 ms │ no change │
│ QQuery 38 │ 43.28 / 54.40 ±19.84 / 94.04 ms │ 40.89 / 50.41 ±12.27 / 74.68 ms │ +1.08x faster │
│ QQuery 39 │ 180.09 / 193.27 ±11.56 / 214.03 ms │ 184.09 / 188.50 ±4.57 / 195.09 ms │ no change │
│ QQuery 40 │ 14.44 / 14.99 ±0.47 / 15.87 ms │ 14.21 / 15.63 ±2.27 / 20.15 ms │ no change │
│ QQuery 41 │ 13.78 / 13.84 ±0.06 / 13.92 ms │ 13.59 / 13.92 ±0.21 / 14.21 ms │ no change │
│ QQuery 42 │ 13.07 / 13.34 ±0.18 / 13.61 ms │ 13.25 / 13.56 ±0.27 / 14.03 ms │ no change │
└───────────┴────────────────────────────────────────────┴────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 106510.35ms │
│ Total Time (issue_23072) │ 106651.59ms │
│ Average Time (HEAD) │ 2476.98ms │
│ Average Time (issue_23072) │ 2480.27ms │
│ Queries Faster │ 7 │
│ Queries Slower │ 3 │
│ Queries with No Change │ 33 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

MetricValue
Wall time535.1s
Peak memory11.5 GiB
Avg memory6.4 GiB
CPU user4819.1s
CPU sys305.8s
Peak spill0 B

clickbench_partitioned — branch

MetricValue
Wall time535.1s
Peak memory12.1 GiB
Avg memory6.5 GiB
CPU user4814.9s
CPU sys315.0s
Peak spill0 B

File an issue against this benchmark runner

@kosiew

Copy link
Copy Markdown
Contributor

from:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 112170.23ms │
│ Total Time (issue_23072) │ 110693.16ms │
│ Average Time (HEAD) │ 2608.61ms │
│ Average Time (issue_23072) │ 2574.26ms │
│ Queries Faster │ 7 │
│ Queries Slower │ 7 │
│ Queries with No Change │ 29 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary ┃ ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD) │ 106510.35ms │
│ Total Time (issue_23072) │ 106651.59ms │
│ Average Time (HEAD) │ 2476.98ms │
│ Average Time (issue_23072) │ 2480.27ms │
│ Queries Faster │ 7 │
│ Queries Slower │ 3 │
│ Queries with No Change │ 33 │
│ Queries with Failure │ 0 │
└────────────────────────────┴─────────────┘

there is no consistent reproducible performance regression

@kosiewkosiew left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Phoenix500526
Thanks for your persistence in this.

Looks 👍 to me

@mkleenmkleen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Phoenix500526 👍

@kosiew
kosiew added this pull request to the merge queueJul 7, 2026
Merged via the queue into apache:main with commit 32e1146Jul 7, 2026
36 checks passed
@Phoenix500526
Phoenix500526 deleted the issue/23072 branch July 7, 2026 08:44
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto detected api changeAuto detected API changecatalogRelated to the catalog cratecommonRelated to common cratecoreCore DataFusion cratedocumentationImprovements or additions to documentationexecutionRelated to the execution crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make file-statistics cache keys schema-aware

5 participants

@Phoenix500526@adriangb@mkleen@adriangbot@kosiew