Skip to content

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

Open
Phoenix500526 wants to merge 8 commits into
apache:mainfrom
Phoenix500526:issue/23072
Open

refactor: make file-statistics cache keys schema-aware#23201
Phoenix500526 wants to merge 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-actions github-actions Bot added core Core DataFusion crate catalog Related to the catalog crate execution Related to the execution crate labels Jun 26, 2026

@mkleen mkleen 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 thread datafusion/execution/src/cache/mod.rs
Comment thread datafusion/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

mkleen commented Jun 26, 2026

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)

Metric Value
Wall time 980.2s
Peak memory 1.2 GiB
Avg memory 98.4 MiB
CPU user 399.6s
CPU sys 58.7s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 975.2s
Peak memory 1.2 GiB
Avg memory 108.3 MiB
CPU user 386.8s
CPU sys 50.4s
Peak spill 0 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)

Metric Value
Wall time 980.2s
Peak memory 1.1 GiB
Avg memory 107.6 MiB
CPU user 398.4s
CPU sys 58.8s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 980.2s
Peak memory 1.2 GiB
Avg memory 104.2 MiB
CPU user 383.6s
CPU sys 51.3s
Peak spill 0 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)

Metric Value
Wall time 970.2s
Peak memory 1.1 GiB
Avg memory 97.1 MiB
CPU user 381.4s
CPU sys 52.1s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 995.2s
Peak memory 1.1 GiB
Avg memory 109.4 MiB
CPU user 384.8s
CPU sys 51.6s
Peak spill 0 B

File an issue against this benchmark runner

@github-actions github-actions Bot 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

mkleen commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

run benchmark wide_schema

baseline:
  env:
    DATAFUSION_RUNTIME_FILE_STATISTICS_CACHE_LIMIT: 0

@mkleen

mkleen commented Jun 26, 2026

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)

Metric Value
Wall time 640.1s
Peak memory 1.2 GiB
Avg memory 152.6 MiB
CPU user 382.9s
CPU sys 52.9s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 975.2s
Peak memory 1.1 GiB
Avg memory 104.0 MiB
CPU user 381.7s
CPU sys 52.0s
Peak spill 0 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)

Metric Value
Wall time 645.1s
Peak memory 1.1 GiB
Avg memory 147.8 MiB
CPU user 379.2s
CPU sys 53.5s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 960.2s
Peak memory 1.1 GiB
Avg memory 100.0 MiB
CPU user 384.2s
CPU sys 52.7s
Peak spill 0 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.

Closes apache#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>
@mkleen

mkleen commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

@kosiew Do you maybe have time for a second opinion?

@kosiew kosiew 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 the fix. I think the schema-aware cache key is the right direction, but I think the implementation can be simplified a bit before this lands.

/// nullability, in order. It deliberately excludes field/schema metadata, which
/// cannot affect statistics — including it would needlessly fragment the cache.
#[derive(Clone, Debug)]
pub struct SchemaFingerprint {

@kosiew kosiew Jun 29, 2026

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.

The schema-aware key looks correct, and I think this fixes the bug. That said, the implementation feels a bit more involved than this cache path needs.

Could we simplify SchemaFingerprint to a small derived newtype over something like Vec<(String, DataType, bool)>, or an equivalent representation, and rely on derived Hash and Eq? The precomputed hash plus custom PartialEq collision handling adds some cleverness that feels hard to justify here unless profiling shows schema-key hashing is material.

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.

If you have a look at the benchmarks results clickbench_partitioned and wide_schema you will find that without this optimization there are real regressions.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

After adding the schema key hash, the performance regression was indeed fixed. I originally wanted to profile the change to determine whether schema key hashing is on the hot path, but my local machine is not powerful enough and the test takes too long to complete, so I’m unable to continue profiling it for now.

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.

@mkleen,

have a look at the benchmarks results clickbench_partitioned and wide_schema you will find that without this optimization there are real regressions.

Sorry I missed this.

@Phoenix500526,

I wonder whether it would be viable to keep TableScopedPath as the cache key and store the schema fingerprint in the cached value too? The lookup would be:

  1. look up by the existing {table, path} key;
  2. validate file metadata as today (size, last_modified);
  3. also validate cached.schema_fingerprint == current_schema_fingerprint;
  4. if either validation fails, treat it as a miss and overwrite the entry for that {table, path}.

This still fixes the bug: stats computed for one schema cannot be reused for another schema. It also preserves cache reuse for repeated anonymous explicit-schema reads with the same schema, which is the improvement over #22950.

The tradeoff is that we would only keep one schema's stats per {table, path}, so alternating schemas for the same file may recompute. That seems acceptable to me because the previous fallback was to skip caching for this problematic case entirely, and a full multi-schema cache feels more complex than this issue needs.

Benchmark-wise, this may improve Q6 if the regression is primarily from schema-aware cache keys, because the key hash/probe returns to the old cheap {table, path} shape. We would still need to verify with clickbench_partitioned, since value-side validation still has per-hit cost: the current schema fingerprint must exist and cache hits still need schema validation/fingerprint comparison. For wide schemas, the precomputed fingerprint hash can still keep that validation cheap. Memory/eviction should also improve because there is at most one entry per {table, path} rather than one per {table, path, schema}.

If we take this approach, FileStatisticsCache can likely remain keyed by TableScopedPath, so the 55.0.0 upgrade-guide entry for changing the public cache key type can be removed or reduced to any smaller CachedFileMetadata API change.

@Phoenix500526 Phoenix500526 Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It's worth a shot and it's already in commit #985b8f374. Could you help run a benchmark to see what's going on? Thanks 😊 @kosiew

Comment thread datafusion/execution/src/cache/mod.rs Outdated
fn heap_size(&self, ctx: &mut DFHeapSizeCtx) -> usize {
self.path.as_ref().heap_size(ctx)
+ self.table.heap_size(ctx)
+ self.schema.as_ref().heap_size(ctx)

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.

FileStatisticsCacheKey::heap_size appears to deep-count the shared SchemaFingerprint for every cached file key. Since ListingTable now shares one Arc<SchemaFingerprint> across all files for the same table and schema, this could overstate cache memory for wide schemas with many files and lead to earlier eviction than necessary.

Could we count only the incremental cache-owned cost here, or add a small test that documents the intended accounting tradeoff?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, it makes sense. Since the schema is shared through an Arc, and the heap allocation behind it is shared by both the cache keys and the ListingTable, I chose to skip counting its heap size.

FileStatisticsCacheKey stores a shared Arc to SchemaFingerprint. Do not
charge the fingerprint heap allocation to each file key, because that
overstates memory use for wide schemas and causes early eviction. Add
a regression test to keep schema width out of per-key sizing.

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-actions Bot 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-actions github-actions Bot added the auto detected api change Auto detected API change label Jul 1, 2026
@mkleen

mkleen commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@mkleen

mkleen commented Jul 1, 2026

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)

Metric Value
Wall time 550.1s
Peak memory 12.0 GiB
Avg memory 6.5 GiB
CPU user 4918.3s
CPU sys 322.5s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 560.1s
Peak memory 12.1 GiB
Avg memory 6.5 GiB
CPU user 4956.7s
CPU sys 319.6s
Peak spill 0 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)

Metric Value
Wall time 640.1s
Peak memory 1.1 GiB
Avg memory 160.4 MiB
CPU user 405.6s
CPU sys 59.4s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 920.2s
Peak memory 1.1 GiB
Avg memory 106.0 MiB
CPU user 400.0s
CPU sys 58.9s
Peak spill 0 B

File an issue against this benchmark runner

@mkleen

mkleen commented Jul 1, 2026

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)

Metric Value
Wall time 560.1s
Peak memory 11.6 GiB
Avg memory 6.6 GiB
CPU user 4945.0s
CPU sys 320.9s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 550.1s
Peak memory 11.7 GiB
Avg memory 6.5 GiB
CPU user 4960.2s
CPU sys 329.8s
Peak spill 0 B

File an issue against this benchmark runner

@kosiew kosiew 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
Contributor Author

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
Contributor Author

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

mkleen commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

run benchmark clickbench_partitioned

@mkleen

mkleen commented Jul 3, 2026

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)

Metric Value
Wall time 565.1s
Peak memory 12.1 GiB
Avg memory 6.4 GiB
CPU user 4969.7s
CPU sys 336.9s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 555.1s
Peak memory 11.9 GiB
Avg memory 6.6 GiB
CPU user 4959.8s
CPU sys 338.9s
Peak spill 0 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)

Metric Value
Wall time 640.1s
Peak memory 1.1 GiB
Avg memory 151.0 MiB
CPU user 371.2s
CPU sys 52.7s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 935.2s
Peak memory 1.1 GiB
Avg memory 101.7 MiB
CPU user 380.5s
CPU sys 53.1s
Peak spill 0 B

File an issue against this benchmark runner

@kosiew

kosiew commented Jul 3, 2026

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)

Metric Value
Wall time 535.1s
Peak memory 11.5 GiB
Avg memory 6.4 GiB
CPU user 4819.1s
CPU sys 305.8s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 535.1s
Peak memory 12.1 GiB
Avg memory 6.5 GiB
CPU user 4814.9s
CPU sys 315.0s
Peak spill 0 B

File an issue against this benchmark runner

@kosiew

kosiew commented Jul 3, 2026

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

@kosiew kosiew 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

@mkleen mkleen 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 👍

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

Labels

auto detected api change Auto detected API change catalog Related to the catalog crate common Related to common crate core Core DataFusion crate documentation Improvements or additions to documentation execution Related 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