Skip to content

Prune hash join probe side via a build-side key range bitmap - #25602

Open
gruuya wants to merge 2 commits into
apache:mainfrom
splitgraph:hash-join-dynamic-pruning-bitmap
Open

gruuya wants to merge 2 commits into
apache:mainfrom
splitgraph:hash-join-dynamic-pruning-bitmap

Conversation

@gruuya

@gruuya gruuya commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

Avoid scanning redundant files/row-groups/pages in the probe side of hash joins, based on the values dictated by the build side.

What changes are included in this PR?

  • wiring up PushdownStrategy::Map/HashTableLookupExpr to carry a representation of the build side values from a hash join, through
  • KeyRangeBitmap implementation, which maps the build-side values array into a finite-sized bitmap bucket, and can answer probing questions for certain ranges
  • extend build_predicate_expression to build the associated pruning expression from HashTableLookupExpr using the new KeyRangeBitmapPruningExpr, which implements PhysicalExpr on top of KeyRangeBitmap
  • also extend build_predicate_expression so that it now pushes down pruning for CaseExprs, since that also unlocks the partitioned hash-join scenario this pr targets

What is the testing strategy for this PR?

A number of unit tests added, and one SLT added.

Also verified on the query shape that motivated the original issue

> copy (select i as k, random() as v from generate_series(0, 1999999) t(i))
to '/tmp/fact.parquet'
stored as parquet options ('format.max_row_group_size' '1000');
+---------+
| count   |
+---------+
| 2000000 |
+---------+
1 row(s) fetched.
Elapsed 0.093 seconds.

> create external table fact stored as parquet location '/tmp/fact.parquet';
0 row(s) fetched.
Elapsed 0.008 seconds.

> create table dim as
select i as k from generate_series(0, 1999999) t(i) where i % 10000 < 200;
0 row(s) fetched.
Elapsed 0.014 seconds.

> select count(*), sum(v) from fact join dim on fact.k = dim.k;
select count(*), sum(v) from fact join dim on fact.k = dim.k;
select count(*), sum(v) from fact join dim on fact.k = dim.k;
select count(*), sum(v) from fact join dim on fact.k = dim.k;
+----------+--------------------+
| count(*) | sum(fact.v)        |
+----------+--------------------+
| 40000    | 20121.308621485692 |
+----------+--------------------+
1 row(s) fetched.
Elapsed 0.031 seconds.

+----------+--------------------+
| count(*) | sum(fact.v)        |
+----------+--------------------+
| 40000    | 20121.308621485692 |
+----------+--------------------+
1 row(s) fetched.
Elapsed 0.017 seconds.

+----------+-------------------+
| count(*) | sum(fact.v)       |
+----------+-------------------+
| 40000    | 20121.30862148569 |
+----------+-------------------+
1 row(s) fetched.
Elapsed 0.011 seconds.

+----------+-------------------+
| count(*) | sum(fact.v)       |
+----------+-------------------+
| 40000    | 20121.30862148569 |
+----------+-------------------+
1 row(s) fetched.
Elapsed 0.011 seconds.

> explain analyze select count(*), sum(v) from fact join dim on fact.k = dim.k;
...
|                   |           DataSourceExec: file_groups={12 groups: [[tmp/fact.parquet:0..1927333], [tmp/fact.parquet:1927333..3854666], [tmp/fact.parquet:3854666..5781999], [tmp/fact.parquet:5781999..7709332], [tmp/fact.parquet:7709332..9636665], ...]}, projection=[k, v], output_ordering=[k@0 ASC NULLS LAST], file_type=parquet, predicate=DynamicFilter [ k@0 >= 0 AND k@0 <= 1990199 AND hash_lookup ], dynamic_rg_pruning=eligible, pruning_predicate=k_null_count@1 != row_count@2 AND k_max@0 >= 0 AND k_null_count@1 != row_count@2 AND k_min@3 <= 1990199 AND k_null_count@1 != row_count@2 AND KEY_RANGE_BITMAP(k_min@3, k_max@0, 20000/1048576 buckets), required_guarantees=[], metrics=[output_rows=200.0 K, elapsed_compute=9.65ms, output_bytes=25.0 MB, output_batches=200, files_ranges_pruned_statistics=12 total → 12 matched, row_groups_pruned_statistics=2.00 K total → 200 matched, row_groups_pruned_bloom_filter=200 total → 200 matched, page_index_pages_pruned=200 total → 200 matched, page_index_rows_pruned=200.0 K total → 200.0 K matched, limit_pruned_row_groups=0 total → 0 matched, batches_split=0, bytes_processed=22.1 MB, bytes_scanned=2.1 MB, file_open_errors=0, file_scan_errors=0, files_opened=12, files_processed=12, num_predicate_creation_errors=0, predicate_evaluation_errors=0, pushdown_rows_matched=0, pushdown_rows_pruned=0, row_groups_pruned_dynamic_filter=0, predicate_cache_inner_records=0, predicate_cache_records=0, bloom_filter_eval_time=64.23µs, metadata_load_time=345.27µs, page_index_eval_time=1.33ms, row_pushdown_eval_time=36ns, statistics_eval_time=896.06µs, time_elapsed_opening=6.99ms, time_elapsed_processing=24.90ms, time_elapsed_scanning_total=224.99ms, time_elapsed_scanning_until_data=25.01ms, output_rows_skew=1.19%, scan_efficiency_ratio=9.7% (2.24 M/23.13 M)] |
...

Are there any user-facing changes?

@github-actions github-actions Bot added sqllogictest SQL Logic Tests (.slt) proto Related to proto crate physical-plan Changes to the physical-plan crate labels Sep 22, 2026
@codecov-commenter

codecov-commenter commented Sep 22, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 83.57143% with 69 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.45%. Comparing base (7570366) to head (a6d5391).

Files with missing lines Patch % Lines
datafusion/pruning/src/key_range_bitmap_expr.rs 35.55% 27 Missing and 2 partials ⚠️
datafusion/pruning/src/pruning_predicate.rs 89.79% 4 Missing and 11 partials ⚠️
...fusion/physical-plan/src/joins/key_range_bitmap.rs 87.50% 9 Missing and 5 partials ⚠️
...tafusion/physical-plan/src/joins/hash_join/exec.rs 83.07% 3 Missing and 8 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #25602      +/-   ##
==========================================
- Coverage   82.45%   82.45%   -0.01%     
==========================================
  Files        1140     1142       +2     
  Lines      436589   436973     +384     
  Branches   436589   436973     +384     
==========================================
+ Hits       359996   360301     +305     
- Misses      54838    54892      +54     
- Partials    21755    21780      +25     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sunchao sunchao left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for working on this. I compared adbb3ce with base 714956b and found two regressions, detailed inline. Both have executable base/head reproductions. The 109 pruning unit tests and 64 ordinary SQL cases per revision passed; the separate nullable-CASE and memory-limit reproducers below fail only on head.

Comment on lines +1875 to +1880
// A missing `ELSE` yields NULL, which never matches, so it adds nothing.
return case
.when_then_expr()
.iter()
.map(|(_, then)| then)
.chain(case.else_expr())

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[P1] Preserve the implicit NULL branch during full-match inference

Omitting the missing ELSE is conservative for ordinary filtering, but this rewriter is also used to build the inverse predicate that proves an entire Parquet row group matches. That makes this change return incorrect rows when datafusion.execution.parquet.pushdown_filters=true.

I reproduced this with required Int64 columns (a,b), two one-row groups containing (2,1) and (1,2), and:

SELECT * FROM t
WHERE NOT (CASE WHEN a = 1 THEN false END) AND b > 0
ORDER BY a;

Base 714956b3 returns only (1,2); head adbb3ce4 also returns (2,1), although its predicate result is NULL. With LIMIT 1 instead of ORDER BY, head returns the invalid (2,1). Disabling filter pushdown restores the correct result.

The forward rewrite falls back for NOT CASE, so it still permits full-match inversion. The inverse exposes CASE ... OR b <= 0; dropping the implicit NULL branch lets it prune both groups, which are then marked fully matched and skip row filtering. Head reports two fully matched groups and row_filter_skipped_fully_matched=1.

Could we keep CASE expressions without an explicit ELSE conservatively unhandled here, and add an end-to-end regression test? The join-generated CASE already has an explicit ELSE. Merely setting has_filter_semantics_only inside this branch would miss the forward NOT CASE path, which never descends into it.

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, added a bail-out for that case as well as an SLT.

Comment on lines +3113 to +3114
let pruning_bitmap = match (left_values.as_slice(), bounds.as_ref()) {
([keys], Some(bounds)) if !keys.is_empty() => bounds

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[P2] Skip bitmap construction when dynamic filtering is inactive

bounds can exist solely for perfect-hash-join candidacy even when should_compute_dynamic_filters is false. This branch still constructs and reserves a pruning bitmap before those bounds are cleared below, so a join with dynamic filtering disabled can now fail for memory that provides no pruning benefit.

Using a native CollectLeft join with 151 Int64 build keys i * 10_000 (i = 0..151), probe keys [0, 500_000, 1_500_000], and enable_join_dynamic_filter_pushdown=false (otherwise default configuration), base 714956b3 succeeds in a 100,000-byte memory pool with 6,220 bytes reserved. Head adbb3ce4 fails with ResourcesExhausted requesting another 131,072 bytes. At a 1,000,000-byte limit both return the exact expected rows, but head reserves 137,292 bytes. I also reproduced the same failure with a Full join.

Could we gate this bitmap construction on should_compute_dynamic_filters and cover the disabled-filter case with a memory-limit regression test?

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.

Nice catch. I also noticed that the same problem happens for the InList path too.

So instead of guarding just the (bit)map path with should_compute_dynamic_filters, i made it guard both by extending the PushdownStrategy::Empty arm with || !should_compute_dynamic_filters; let me know if you see issues with this.

Also a unit test added.

gruuya and others added 2 commits September 23, 2026 09:20
Map the build side's keys onto a fixed-size bitmap over their range and
test container min/max against it, so a scan can skip containers whose
values fall in the gaps between keys.

The bitmap is bounded at 128 KiB regardless of build side size, and one
whose buckets are all set is discarded, so a contiguous key set costs
nothing. The key range and distinct count already exist for the bounds
predicate, so a dense key set is ruled out before allocating.

Integer keys only; other types go unpruned.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gruuya
gruuya force-pushed the hash-join-dynamic-pruning-bitmap branch from 6c48fab to a6d5391 Compare September 23, 2026 07:20
Comment on lines +3129 to +3133
if let Some(bitmap) = pruning_bitmap.as_ref() {
// Held for the join's lifetime, so charge it like the maps.
reservation.try_grow(bitmap.size())?;
metrics.build_mem_used.add(bitmap.size());
}

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 bitmap is only a pruning aid, but try_grow(...)? turns a failed reservation into a query error. A join with less than 128 KiB of headroom per build partition used to succeed and now fails with ResourcesExhausted. Drop the bitmap instead:

Suggested change
if let Some(bitmap) = pruning_bitmap.as_ref() {
// Held for the join's lifetime, so charge it like the maps.
reservation.try_grow(bitmap.size())?;
metrics.build_mem_used.add(bitmap.size());
}
// Held for the join's lifetime, so charge it like the maps; it is
// optional, so skip it rather than fail when the pool is full.
let pruning_bitmap = pruning_bitmap.filter(|bitmap| {
let ok = reservation.try_grow(bitmap.size()).is_ok();
if ok {
metrics.build_mem_used.add(bitmap.size());
}
ok
});

@jayzhan211

Copy link
Copy Markdown
Contributor

run benchmarks

@jayzhan211

Copy link
Copy Markdown
Contributor

I think we need benchmark number

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c5796283732-2637-w2jh9 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark 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-c5796283732-2638-5slkt 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark tpcds

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-c5796283732-2639-gsphp 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark tpch

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark tpch
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 hash-join-dynamic-pruning-bitmap
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.93 ms │                         40.56 ms │     no change │
│ QQuery 2  │ 18.48 ms │                         18.36 ms │     no change │
│ QQuery 3  │ 28.42 ms │                         28.75 ms │     no change │
│ QQuery 4  │ 17.24 ms │                         18.30 ms │  1.06x slower │
│ QQuery 5  │ 34.77 ms │                         35.31 ms │     no change │
│ QQuery 6  │ 16.30 ms │                         16.14 ms │     no change │
│ QQuery 7  │ 43.26 ms │                         41.39 ms │     no change │
│ QQuery 8  │ 41.46 ms │                         40.71 ms │     no change │
│ QQuery 9  │ 48.98 ms │                         50.15 ms │     no change │
│ QQuery 10 │ 40.29 ms │                         40.41 ms │     no change │
│ QQuery 11 │ 13.27 ms │                         13.06 ms │     no change │
│ QQuery 12 │ 21.15 ms │                         21.35 ms │     no change │
│ QQuery 13 │ 39.49 ms │                         39.11 ms │     no change │
│ QQuery 14 │ 24.29 ms │                         24.34 ms │     no change │
│ QQuery 15 │ 30.45 ms │                         30.75 ms │     no change │
│ QQuery 16 │ 14.52 ms │                         14.53 ms │     no change │
│ QQuery 17 │ 71.83 ms │                         73.71 ms │     no change │
│ QQuery 18 │ 59.39 ms │                         45.37 ms │ +1.31x faster │
│ QQuery 19 │ 31.78 ms │                         31.86 ms │     no change │
│ QQuery 20 │ 32.19 ms │                         31.62 ms │     no change │
│ QQuery 21 │ 56.55 ms │                         55.04 ms │     no change │
│ QQuery 22 │ 14.12 ms │                         13.64 ms │     no change │
└───────────┴──────────┴──────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                               ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 739.16ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 724.46ms │
│ Average Time (HEAD)                             │  33.60ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │  32.93ms │
│ Queries Faster                                  │        1 │
│ Queries Slower                                  │        1 │
│ Queries with No Change                          │       20 │
│ Queries with Failure                            │        0 │
└─────────────────────────────────────────────────┴──────────┘

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

Comparing HEAD and hash-join-dynamic-pruning-bitmap
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.93 / 41.68 ±0.85 / 43.24 ms │   40.56 / 41.23 ±1.07 / 43.35 ms │     no change │
│ QQuery 2  │ 18.48 / 18.74 ±0.20 / 19.05 ms │   18.36 / 18.88 ±0.91 / 20.71 ms │     no change │
│ QQuery 3  │ 28.42 / 28.61 ±0.18 / 28.87 ms │   28.75 / 29.55 ±0.76 / 30.60 ms │     no change │
│ QQuery 4  │ 17.24 / 17.86 ±0.56 / 18.86 ms │   18.30 / 18.71 ±0.24 / 18.98 ms │     no change │
│ QQuery 5  │ 34.77 / 35.46 ±1.07 / 37.59 ms │   35.31 / 37.16 ±1.44 / 39.43 ms │     no change │
│ QQuery 6  │ 16.30 / 16.62 ±0.23 / 16.95 ms │   16.14 / 16.40 ±0.23 / 16.82 ms │     no change │
│ QQuery 7  │ 43.26 / 44.28 ±0.85 / 45.70 ms │   41.39 / 43.01 ±1.04 / 44.23 ms │     no change │
│ QQuery 8  │ 41.46 / 42.27 ±0.77 / 43.70 ms │   40.71 / 41.18 ±0.52 / 42.15 ms │     no change │
│ QQuery 9  │ 48.98 / 50.98 ±1.40 / 53.20 ms │   50.15 / 52.58 ±2.41 / 56.24 ms │     no change │
│ QQuery 10 │ 40.29 / 41.04 ±0.86 / 42.71 ms │   40.41 / 40.81 ±0.46 / 41.70 ms │     no change │
│ QQuery 11 │ 13.27 / 13.46 ±0.17 / 13.75 ms │   13.06 / 13.30 ±0.22 / 13.58 ms │     no change │
│ QQuery 12 │ 21.15 / 21.68 ±0.63 / 22.89 ms │   21.35 / 21.83 ±0.28 / 22.19 ms │     no change │
│ QQuery 13 │ 39.49 / 40.29 ±0.63 / 41.29 ms │   39.11 / 39.45 ±0.29 / 39.89 ms │     no change │
│ QQuery 14 │ 24.29 / 24.42 ±0.12 / 24.63 ms │   24.34 / 24.52 ±0.15 / 24.75 ms │     no change │
│ QQuery 15 │ 30.45 / 30.64 ±0.16 / 30.87 ms │   30.75 / 30.92 ±0.15 / 31.17 ms │     no change │
│ QQuery 16 │ 14.52 / 14.74 ±0.21 / 15.07 ms │   14.53 / 15.00 ±0.25 / 15.22 ms │     no change │
│ QQuery 17 │ 71.83 / 73.60 ±1.17 / 74.86 ms │   73.71 / 74.56 ±1.00 / 76.42 ms │     no change │
│ QQuery 18 │ 59.39 / 61.74 ±1.44 / 63.59 ms │   45.37 / 46.10 ±1.06 / 48.16 ms │ +1.34x faster │
│ QQuery 19 │ 31.78 / 31.97 ±0.14 / 32.13 ms │   31.86 / 31.97 ±0.06 / 32.03 ms │     no change │
│ QQuery 20 │ 32.19 / 33.41 ±1.25 / 35.33 ms │   31.62 / 32.23 ±0.69 / 33.57 ms │     no change │
│ QQuery 21 │ 56.55 / 59.05 ±3.48 / 65.91 ms │   55.04 / 57.94 ±2.79 / 61.65 ms │     no change │
│ QQuery 22 │ 14.12 / 14.37 ±0.14 / 14.50 ms │   13.64 / 13.92 ±0.21 / 14.24 ms │     no change │
└───────────┴────────────────────────────────┴──────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                               ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 756.89ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 741.26ms │
│ Average Time (HEAD)                             │  34.40ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │  33.69ms │
│ Queries Faster                                  │        1 │
│ Queries Slower                                  │        0 │
│ Queries with No Change                          │       21 │
│ Queries with Failure                            │        0 │
└─────────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.3 GiB
Avg memory 516.9 MiB
CPU user 21.3s
CPU sys 1.6s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 499.5 MiB
CPU user 20.5s
CPU sys 1.7s
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)

Comparing hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark tpcds
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 hash-join-dynamic-pruning-bitmap
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.94 ms │                          6.11 ms │     no change │
│ QQuery 2  │   82.38 ms │                         82.09 ms │     no change │
│ QQuery 3  │   29.07 ms │                         29.19 ms │     no change │
│ QQuery 4  │  502.18 ms │                        489.58 ms │     no change │
│ QQuery 5  │   51.37 ms │                         51.81 ms │     no change │
│ QQuery 6  │   36.81 ms │                         36.93 ms │     no change │
│ QQuery 7  │   74.90 ms │                         75.11 ms │     no change │
│ QQuery 8  │   37.51 ms │                         37.06 ms │     no change │
│ QQuery 9  │   53.54 ms │                         53.24 ms │     no change │
│ QQuery 10 │   63.07 ms │                         63.13 ms │     no change │
│ QQuery 11 │  308.59 ms │                        308.22 ms │     no change │
│ QQuery 12 │   30.52 ms │                         29.79 ms │     no change │
│ QQuery 13 │  120.01 ms │                        121.75 ms │     no change │
│ QQuery 14 │  400.81 ms │                        403.62 ms │     no change │
│ QQuery 15 │   60.54 ms │                         59.82 ms │     no change │
│ QQuery 16 │    7.03 ms │                          6.86 ms │     no change │
│ QQuery 17 │   79.25 ms │                         82.21 ms │     no change │
│ QQuery 18 │  108.53 ms │                        109.25 ms │     no change │
│ QQuery 19 │   42.10 ms │                         42.33 ms │     no change │
│ QQuery 20 │   35.84 ms │                         36.99 ms │     no change │
│ QQuery 21 │   17.58 ms │                         17.44 ms │     no change │
│ QQuery 22 │   67.15 ms │                         68.05 ms │     no change │
│ QQuery 23 │  328.93 ms │                        333.92 ms │     no change │
│ QQuery 24 │  204.46 ms │                        206.57 ms │     no change │
│ QQuery 25 │  107.82 ms │                        110.85 ms │     no change │
│ QQuery 26 │   49.26 ms │                         48.93 ms │     no change │
│ QQuery 27 │    6.48 ms │                          6.26 ms │     no change │
│ QQuery 28 │   56.21 ms │                         57.15 ms │     no change │
│ QQuery 29 │   96.48 ms │                         98.23 ms │     no change │
│ QQuery 30 │   33.97 ms │                         33.34 ms │     no change │
│ QQuery 31 │  111.67 ms │                        111.76 ms │     no change │
│ QQuery 32 │   21.47 ms │                         21.27 ms │     no change │
│ QQuery 33 │   38.02 ms │                         37.69 ms │     no change │
│ QQuery 34 │   11.02 ms │                         10.38 ms │ +1.06x faster │
│ QQuery 35 │   76.43 ms │                         76.41 ms │     no change │
│ QQuery 36 │    6.23 ms │                          6.11 ms │     no change │
│ QQuery 37 │    7.40 ms │                          7.20 ms │     no change │
│ QQuery 38 │   65.23 ms │                         64.61 ms │     no change │
│ QQuery 39 │   75.51 ms │                         76.56 ms │     no change │
│ QQuery 40 │   25.24 ms │                         25.28 ms │     no change │
│ QQuery 41 │   12.02 ms │                         11.90 ms │     no change │
│ QQuery 42 │   24.14 ms │                         24.21 ms │     no change │
│ QQuery 43 │    5.61 ms │                          5.39 ms │     no change │
│ QQuery 44 │    9.67 ms │                          9.46 ms │     no change │
│ QQuery 45 │   43.57 ms │                         41.83 ms │     no change │
│ QQuery 46 │   12.37 ms │                         12.22 ms │     no change │
│ QQuery 47 │  252.84 ms │                        237.51 ms │ +1.06x faster │
│ QQuery 48 │   98.08 ms │                         97.46 ms │     no change │
│ QQuery 49 │   70.61 ms │                         71.29 ms │     no change │
│ QQuery 50 │   58.85 ms │                         60.24 ms │     no change │
│ QQuery 51 │   96.17 ms │                         94.66 ms │     no change │
│ QQuery 52 │   24.77 ms │                         24.75 ms │     no change │
│ QQuery 53 │   29.71 ms │                         29.53 ms │     no change │
│ QQuery 54 │   55.81 ms │                         55.43 ms │     no change │
│ QQuery 55 │   24.39 ms │                         24.22 ms │     no change │
│ QQuery 56 │   40.98 ms │                         39.53 ms │     no change │
│ QQuery 57 │  179.51 ms │                        174.32 ms │     no change │
│ QQuery 58 │  113.18 ms │                        111.29 ms │     no change │
│ QQuery 59 │  119.50 ms │                        118.46 ms │     no change │
│ QQuery 60 │   39.73 ms │                         39.64 ms │     no change │
│ QQuery 61 │   12.17 ms │                         12.17 ms │     no change │
│ QQuery 62 │   45.66 ms │                         45.61 ms │     no change │
│ QQuery 63 │   29.66 ms │                         29.99 ms │     no change │
│ QQuery 64 │  370.90 ms │                        372.16 ms │     no change │
│ QQuery 65 │  137.85 ms │                        135.97 ms │     no change │
│ QQuery 66 │   80.53 ms │                         79.10 ms │     no change │
│ QQuery 67 │  270.05 ms │                        261.44 ms │     no change │
│ QQuery 68 │   12.49 ms │                         12.44 ms │     no change │
│ QQuery 69 │   57.95 ms │                         57.64 ms │     no change │
│ QQuery 70 │  106.25 ms │                        105.13 ms │     no change │
│ QQuery 71 │   35.86 ms │                         35.71 ms │     no change │
│ QQuery 72 │ 1868.17 ms │                       1848.21 ms │     no change │
│ QQuery 73 │   11.01 ms │                         10.27 ms │ +1.07x faster │
│ QQuery 74 │  180.73 ms │                        176.42 ms │     no change │
│ QQuery 75 │  142.95 ms │                        146.55 ms │     no change │
│ QQuery 76 │   35.22 ms │                         34.96 ms │     no change │
│ QQuery 77 │   61.61 ms │                         61.01 ms │     no change │
│ QQuery 78 │  166.78 ms │                        167.56 ms │     no change │
│ QQuery 79 │   67.32 ms │                         67.34 ms │     no change │
│ QQuery 80 │   96.54 ms │                         98.46 ms │     no change │
│ QQuery 81 │   27.06 ms │                         26.95 ms │     no change │
│ QQuery 82 │   16.99 ms │                         17.10 ms │     no change │
│ QQuery 83 │   35.05 ms │                         34.33 ms │     no change │
│ QQuery 84 │   30.13 ms │                         30.20 ms │     no change │
│ QQuery 85 │  105.17 ms │                        106.17 ms │     no change │
│ QQuery 86 │   26.06 ms │                         25.84 ms │     no change │
│ QQuery 87 │   65.32 ms │                         64.50 ms │     no change │
│ QQuery 88 │   61.59 ms │                         62.31 ms │     no change │
│ QQuery 89 │   35.57 ms │                         35.49 ms │     no change │
│ QQuery 90 │   17.14 ms │                         17.06 ms │     no change │
│ QQuery 91 │   45.37 ms │                         46.54 ms │     no change │
│ QQuery 92 │   30.02 ms │                         31.61 ms │  1.05x slower │
│ QQuery 93 │   49.91 ms │                         50.03 ms │     no change │
│ QQuery 94 │   40.07 ms │                         40.05 ms │     no change │
│ QQuery 95 │   80.64 ms │                         84.56 ms │     no change │
│ QQuery 96 │   24.14 ms │                         24.25 ms │     no change │
│ QQuery 97 │   52.21 ms │                         51.66 ms │     no change │
│ QQuery 98 │   43.25 ms │                         42.67 ms │     no change │
│ QQuery 99 │   67.43 ms │                         66.61 ms │     no change │
└───────────┴────────────┴──────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 9490.86ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 9442.48ms │
│ Average Time (HEAD)                             │   95.87ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │   95.38ms │
│ Queries Faster                                  │         3 │
│ Queries Slower                                  │         1 │
│ Queries with No Change                          │        95 │
│ Queries with Failure                            │         0 │
└─────────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and hash-join-dynamic-pruning-bitmap
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃      hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.94 / 6.51 ±0.90 / 8.30 ms │           6.11 / 6.68 ±0.94 / 8.54 ms │     no change │
│ QQuery 2  │        82.38 / 82.75 ±0.21 / 82.98 ms │        82.09 / 82.64 ±0.36 / 83.10 ms │     no change │
│ QQuery 3  │        29.07 / 29.22 ±0.14 / 29.41 ms │        29.19 / 29.29 ±0.11 / 29.51 ms │     no change │
│ QQuery 4  │     502.18 / 503.64 ±1.32 / 505.39 ms │     489.58 / 494.47 ±4.83 / 500.57 ms │     no change │
│ QQuery 5  │        51.37 / 52.40 ±0.60 / 53.09 ms │        51.81 / 52.29 ±0.41 / 53.01 ms │     no change │
│ QQuery 6  │        36.81 / 37.48 ±0.56 / 38.38 ms │        36.93 / 37.47 ±0.36 / 38.00 ms │     no change │
│ QQuery 7  │        74.90 / 75.77 ±0.60 / 76.56 ms │        75.11 / 76.02 ±0.54 / 76.62 ms │     no change │
│ QQuery 8  │        37.51 / 39.27 ±1.90 / 42.78 ms │        37.06 / 38.92 ±2.66 / 44.21 ms │     no change │
│ QQuery 9  │        53.54 / 55.30 ±1.98 / 58.41 ms │        53.24 / 54.17 ±0.57 / 54.79 ms │     no change │
│ QQuery 10 │        63.07 / 63.26 ±0.19 / 63.59 ms │        63.13 / 63.41 ±0.23 / 63.78 ms │     no change │
│ QQuery 11 │     308.59 / 312.52 ±2.76 / 315.87 ms │     308.22 / 319.26 ±7.82 / 328.88 ms │     no change │
│ QQuery 12 │        30.52 / 30.76 ±0.21 / 31.03 ms │        29.79 / 30.81 ±0.65 / 31.82 ms │     no change │
│ QQuery 13 │     120.01 / 121.19 ±1.05 / 122.96 ms │     121.75 / 123.20 ±1.24 / 125.34 ms │     no change │
│ QQuery 14 │     400.81 / 407.00 ±5.27 / 414.24 ms │     403.62 / 407.67 ±3.06 / 412.49 ms │     no change │
│ QQuery 15 │        60.54 / 60.91 ±0.22 / 61.12 ms │        59.82 / 60.52 ±0.68 / 61.78 ms │     no change │
│ QQuery 16 │           7.03 / 7.14 ±0.14 / 7.42 ms │           6.86 / 7.08 ±0.17 / 7.33 ms │     no change │
│ QQuery 17 │        79.25 / 81.26 ±2.14 / 85.37 ms │        82.21 / 83.62 ±1.61 / 86.63 ms │     no change │
│ QQuery 18 │     108.53 / 110.03 ±1.23 / 111.99 ms │     109.25 / 110.59 ±1.74 / 113.72 ms │     no change │
│ QQuery 19 │        42.10 / 42.38 ±0.18 / 42.62 ms │        42.33 / 42.88 ±0.52 / 43.69 ms │     no change │
│ QQuery 20 │        35.84 / 36.38 ±0.43 / 36.97 ms │        36.99 / 37.95 ±1.02 / 39.67 ms │     no change │
│ QQuery 21 │        17.58 / 17.83 ±0.28 / 18.30 ms │        17.44 / 17.81 ±0.24 / 18.16 ms │     no change │
│ QQuery 22 │        67.15 / 68.17 ±0.76 / 69.45 ms │        68.05 / 69.28 ±1.21 / 71.49 ms │     no change │
│ QQuery 23 │     328.93 / 339.43 ±6.65 / 349.88 ms │     333.92 / 339.51 ±4.30 / 346.57 ms │     no change │
│ QQuery 24 │     204.46 / 205.55 ±1.26 / 207.88 ms │     206.57 / 210.43 ±5.66 / 221.56 ms │     no change │
│ QQuery 25 │     107.82 / 109.66 ±1.37 / 111.57 ms │     110.85 / 112.61 ±1.83 / 116.00 ms │     no change │
│ QQuery 26 │        49.26 / 49.68 ±0.28 / 50.07 ms │        48.93 / 49.43 ±0.35 / 49.83 ms │     no change │
│ QQuery 27 │           6.48 / 6.65 ±0.16 / 6.94 ms │           6.26 / 6.41 ±0.14 / 6.63 ms │     no change │
│ QQuery 28 │        56.21 / 60.53 ±5.36 / 69.54 ms │        57.15 / 61.11 ±2.99 / 65.38 ms │     no change │
│ QQuery 29 │       96.48 / 98.50 ±2.68 / 103.60 ms │       98.23 / 99.97 ±1.26 / 102.08 ms │     no change │
│ QQuery 30 │        33.97 / 34.61 ±0.48 / 35.42 ms │        33.34 / 33.57 ±0.12 / 33.70 ms │     no change │
│ QQuery 31 │     111.67 / 113.56 ±2.90 / 119.33 ms │     111.76 / 115.13 ±3.71 / 121.62 ms │     no change │
│ QQuery 32 │        21.47 / 21.51 ±0.02 / 21.53 ms │        21.27 / 21.44 ±0.11 / 21.57 ms │     no change │
│ QQuery 33 │        38.02 / 38.31 ±0.16 / 38.47 ms │        37.69 / 38.20 ±0.36 / 38.63 ms │     no change │
│ QQuery 34 │        11.02 / 11.17 ±0.12 / 11.33 ms │        10.38 / 10.73 ±0.22 / 11.08 ms │     no change │
│ QQuery 35 │        76.43 / 79.13 ±2.34 / 83.45 ms │        76.41 / 79.57 ±2.41 / 83.40 ms │     no change │
│ QQuery 36 │           6.23 / 6.78 ±0.69 / 8.14 ms │           6.11 / 6.22 ±0.11 / 6.40 ms │ +1.09x faster │
│ QQuery 37 │           7.40 / 7.60 ±0.21 / 7.99 ms │           7.20 / 7.37 ±0.18 / 7.64 ms │     no change │
│ QQuery 38 │        65.23 / 65.86 ±0.60 / 66.91 ms │        64.61 / 65.97 ±1.22 / 68.14 ms │     no change │
│ QQuery 39 │        75.51 / 76.59 ±0.57 / 77.09 ms │        76.56 / 78.02 ±1.02 / 79.31 ms │     no change │
│ QQuery 40 │        25.24 / 27.28 ±2.36 / 31.79 ms │        25.28 / 25.85 ±0.41 / 26.43 ms │ +1.06x faster │
│ QQuery 41 │        12.02 / 12.05 ±0.02 / 12.08 ms │        11.90 / 12.47 ±0.70 / 13.84 ms │     no change │
│ QQuery 42 │        24.14 / 24.58 ±0.30 / 24.86 ms │        24.21 / 24.78 ±0.68 / 26.07 ms │     no change │
│ QQuery 43 │           5.61 / 5.69 ±0.11 / 5.90 ms │           5.39 / 5.47 ±0.07 / 5.58 ms │     no change │
│ QQuery 44 │          9.67 / 9.86 ±0.16 / 10.14 ms │           9.46 / 9.70 ±0.13 / 9.84 ms │     no change │
│ QQuery 45 │        43.57 / 44.19 ±0.62 / 45.35 ms │        41.83 / 42.37 ±0.39 / 42.77 ms │     no change │
│ QQuery 46 │        12.37 / 12.77 ±0.35 / 13.22 ms │        12.22 / 12.46 ±0.20 / 12.69 ms │     no change │
│ QQuery 47 │     252.84 / 257.16 ±4.65 / 265.95 ms │     237.51 / 245.09 ±6.75 / 256.34 ms │     no change │
│ QQuery 48 │       98.08 / 99.99 ±2.27 / 104.33 ms │       97.46 / 99.10 ±2.28 / 103.40 ms │     no change │
│ QQuery 49 │        70.61 / 71.58 ±1.04 / 73.55 ms │        71.29 / 72.04 ±0.60 / 72.96 ms │     no change │
│ QQuery 50 │        58.85 / 59.63 ±0.77 / 61.10 ms │        60.24 / 62.15 ±2.68 / 67.41 ms │     no change │
│ QQuery 51 │        96.17 / 98.44 ±1.25 / 99.81 ms │        94.66 / 95.96 ±1.44 / 98.37 ms │     no change │
│ QQuery 52 │        24.77 / 25.01 ±0.15 / 25.18 ms │        24.75 / 25.09 ±0.45 / 25.98 ms │     no change │
│ QQuery 53 │        29.71 / 29.82 ±0.11 / 29.99 ms │        29.53 / 29.66 ±0.12 / 29.81 ms │     no change │
│ QQuery 54 │        55.81 / 57.00 ±0.79 / 58.27 ms │        55.43 / 57.05 ±2.37 / 61.77 ms │     no change │
│ QQuery 55 │        24.39 / 24.87 ±0.36 / 25.33 ms │        24.22 / 25.62 ±1.62 / 28.76 ms │     no change │
│ QQuery 56 │        40.98 / 41.61 ±0.65 / 42.77 ms │        39.53 / 40.20 ±0.37 / 40.67 ms │     no change │
│ QQuery 57 │     179.51 / 183.77 ±4.80 / 193.06 ms │     174.32 / 176.38 ±1.69 / 179.21 ms │     no change │
│ QQuery 58 │     113.18 / 114.72 ±1.77 / 117.87 ms │     111.29 / 112.79 ±1.27 / 114.92 ms │     no change │
│ QQuery 59 │     119.50 / 120.90 ±2.35 / 125.56 ms │     118.46 / 119.23 ±0.88 / 120.91 ms │     no change │
│ QQuery 60 │        39.73 / 40.57 ±0.81 / 41.92 ms │        39.64 / 39.99 ±0.38 / 40.67 ms │     no change │
│ QQuery 61 │        12.17 / 12.31 ±0.09 / 12.43 ms │        12.17 / 12.28 ±0.09 / 12.44 ms │     no change │
│ QQuery 62 │        45.66 / 47.82 ±3.82 / 55.44 ms │        45.61 / 47.53 ±3.25 / 54.03 ms │     no change │
│ QQuery 63 │        29.66 / 30.08 ±0.29 / 30.40 ms │        29.99 / 30.38 ±0.29 / 30.85 ms │     no change │
│ QQuery 64 │     370.90 / 377.86 ±3.85 / 381.93 ms │     372.16 / 379.80 ±5.73 / 389.24 ms │     no change │
│ QQuery 65 │     137.85 / 139.81 ±1.80 / 143.06 ms │     135.97 / 137.47 ±1.29 / 139.56 ms │     no change │
│ QQuery 66 │        80.53 / 82.76 ±3.55 / 89.82 ms │        79.10 / 80.79 ±2.69 / 86.14 ms │     no change │
│ QQuery 67 │    270.05 / 283.63 ±13.79 / 309.84 ms │     261.44 / 268.44 ±5.23 / 273.91 ms │ +1.06x faster │
│ QQuery 68 │        12.49 / 12.68 ±0.16 / 12.92 ms │        12.44 / 12.56 ±0.12 / 12.75 ms │     no change │
│ QQuery 69 │        57.95 / 58.79 ±0.94 / 60.44 ms │        57.64 / 58.14 ±0.36 / 58.68 ms │     no change │
│ QQuery 70 │     106.25 / 107.80 ±1.17 / 109.27 ms │     105.13 / 110.04 ±4.37 / 118.24 ms │     no change │
│ QQuery 71 │        35.86 / 36.27 ±0.35 / 36.91 ms │        35.71 / 36.06 ±0.20 / 36.28 ms │     no change │
│ QQuery 72 │ 1868.17 / 1913.18 ±46.87 / 1997.00 ms │ 1848.21 / 1890.72 ±24.24 / 1918.42 ms │     no change │
│ QQuery 73 │        11.01 / 11.75 ±0.54 / 12.30 ms │        10.27 / 12.17 ±2.87 / 17.88 ms │     no change │
│ QQuery 74 │     180.73 / 183.08 ±3.43 / 189.83 ms │     176.42 / 178.75 ±1.86 / 180.47 ms │     no change │
│ QQuery 75 │     142.95 / 143.94 ±0.54 / 144.51 ms │     146.55 / 148.38 ±1.59 / 150.75 ms │     no change │
│ QQuery 76 │        35.22 / 37.95 ±4.26 / 46.43 ms │        34.96 / 35.35 ±0.25 / 35.72 ms │ +1.07x faster │
│ QQuery 77 │        61.61 / 62.89 ±0.99 / 64.55 ms │        61.01 / 65.36 ±6.66 / 78.59 ms │     no change │
│ QQuery 78 │     166.78 / 170.06 ±2.25 / 172.45 ms │     167.56 / 171.26 ±3.09 / 176.53 ms │     no change │
│ QQuery 79 │        67.32 / 68.71 ±1.61 / 71.86 ms │        67.34 / 69.46 ±3.19 / 75.77 ms │     no change │
│ QQuery 80 │       96.54 / 98.15 ±2.09 / 102.27 ms │       98.46 / 99.55 ±0.80 / 100.93 ms │     no change │
│ QQuery 81 │        27.06 / 27.50 ±0.36 / 27.94 ms │        26.95 / 27.22 ±0.22 / 27.60 ms │     no change │
│ QQuery 82 │        16.99 / 17.48 ±0.61 / 18.68 ms │        17.10 / 19.50 ±4.15 / 27.79 ms │  1.12x slower │
│ QQuery 83 │        35.05 / 35.38 ±0.32 / 35.97 ms │        34.33 / 35.24 ±0.96 / 37.09 ms │     no change │
│ QQuery 84 │        30.13 / 30.30 ±0.17 / 30.60 ms │        30.20 / 30.45 ±0.22 / 30.85 ms │     no change │
│ QQuery 85 │     105.17 / 108.80 ±5.30 / 119.30 ms │     106.17 / 107.16 ±0.84 / 108.54 ms │     no change │
│ QQuery 86 │        26.06 / 27.49 ±1.54 / 30.44 ms │        25.84 / 28.54 ±4.45 / 37.42 ms │     no change │
│ QQuery 87 │        65.32 / 66.63 ±0.74 / 67.36 ms │        64.50 / 66.97 ±1.38 / 68.60 ms │     no change │
│ QQuery 88 │        61.59 / 62.01 ±0.37 / 62.58 ms │        62.31 / 62.97 ±0.42 / 63.46 ms │     no change │
│ QQuery 89 │        35.57 / 37.82 ±3.69 / 45.16 ms │        35.49 / 36.18 ±0.39 / 36.65 ms │     no change │
│ QQuery 90 │        17.14 / 17.40 ±0.14 / 17.56 ms │        17.06 / 17.28 ±0.20 / 17.64 ms │     no change │
│ QQuery 91 │        45.37 / 46.56 ±0.84 / 47.98 ms │        46.54 / 48.54 ±3.01 / 54.54 ms │     no change │
│ QQuery 92 │        30.02 / 30.47 ±0.23 / 30.67 ms │        31.61 / 32.20 ±0.74 / 33.63 ms │  1.06x slower │
│ QQuery 93 │        49.91 / 51.05 ±1.08 / 52.71 ms │        50.03 / 51.59 ±1.06 / 53.26 ms │     no change │
│ QQuery 94 │        40.07 / 41.34 ±1.75 / 44.79 ms │        40.05 / 40.33 ±0.18 / 40.60 ms │     no change │
│ QQuery 95 │        80.64 / 82.80 ±1.11 / 83.78 ms │        84.56 / 87.00 ±2.49 / 91.37 ms │  1.05x slower │
│ QQuery 96 │        24.14 / 24.28 ±0.11 / 24.44 ms │        24.25 / 24.54 ±0.23 / 24.86 ms │     no change │
│ QQuery 97 │        52.21 / 52.92 ±1.12 / 55.14 ms │        51.66 / 52.96 ±1.43 / 55.69 ms │     no change │
│ QQuery 98 │        43.25 / 44.71 ±1.13 / 46.50 ms │        42.67 / 43.40 ±0.49 / 44.19 ms │     no change │
│ QQuery 99 │        67.43 / 68.14 ±0.67 / 69.20 ms │        66.61 / 69.53 ±3.29 / 75.85 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 9680.34ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 9641.25ms │
│ Average Time (HEAD)                             │   97.78ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │   97.39ms │
│ Queries Faster                                  │         4 │
│ Queries Slower                                  │         3 │
│ Queries with No Change                          │        92 │
│ Queries with Failure                            │         0 │
└─────────────────────────────────────────────────┴───────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 2.0 GiB
Avg memory 1.4 GiB
CPU user 211.0s
CPU sys 5.8s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 50.0s
Peak memory 2.0 GiB
Avg memory 1.4 GiB
CPU user 211.6s
CPU sys 5.7s
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)

Comparing hash-join-dynamic-pruning-bitmap (a6d5391) to 7570366 (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
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 hash-join-dynamic-pruning-bitmap
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.22 ms │                          1.24 ms │     no change │
│ QQuery 1  │   11.77 ms │                         11.66 ms │     no change │
│ QQuery 2  │   36.53 ms │                         37.04 ms │     no change │
│ QQuery 3  │   32.04 ms │                         31.44 ms │     no change │
│ QQuery 4  │  235.30 ms │                        234.09 ms │     no change │
│ QQuery 5  │  272.70 ms │                        272.16 ms │     no change │
│ QQuery 6  │    1.28 ms │                          1.30 ms │     no change │
│ QQuery 7  │   12.85 ms │                         12.70 ms │     no change │
│ QQuery 8  │  330.42 ms │                        325.99 ms │     no change │
│ QQuery 9  │  465.15 ms │                        473.82 ms │     no change │
│ QQuery 10 │   65.55 ms │                         63.14 ms │     no change │
│ QQuery 11 │   75.79 ms │                         75.20 ms │     no change │
│ QQuery 12 │  265.57 ms │                        260.07 ms │     no change │
│ QQuery 13 │  365.05 ms │                        358.52 ms │     no change │
│ QQuery 14 │  280.42 ms │                        275.51 ms │     no change │
│ QQuery 15 │  280.11 ms │                        280.82 ms │     no change │
│ QQuery 16 │  613.15 ms │                        623.92 ms │     no change │
│ QQuery 17 │  621.23 ms │                        616.98 ms │     no change │
│ QQuery 18 │ 1264.03 ms │                       1272.06 ms │     no change │
│ QQuery 19 │   27.41 ms │                         27.75 ms │     no change │
│ QQuery 20 │  511.28 ms │                        519.85 ms │     no change │
│ QQuery 21 │  512.23 ms │                        505.84 ms │     no change │
│ QQuery 22 │  990.30 ms │                       1007.09 ms │     no change │
│ QQuery 23 │ 3144.97 ms │                       3095.28 ms │     no change │
│ QQuery 24 │   40.98 ms │                         40.96 ms │     no change │
│ QQuery 25 │  106.52 ms │                        104.99 ms │     no change │
│ QQuery 26 │   41.24 ms │                         41.30 ms │     no change │
│ QQuery 27 │  516.00 ms │                        514.85 ms │     no change │
│ QQuery 28 │ 2890.23 ms │                       2874.28 ms │     no change │
│ QQuery 29 │   41.90 ms │                         41.45 ms │     no change │
│ QQuery 30 │  307.40 ms │                        308.77 ms │     no change │
│ QQuery 31 │  283.26 ms │                        268.36 ms │ +1.06x faster │
│ QQuery 32 │ 1048.87 ms │                       1041.16 ms │     no change │
│ QQuery 33 │ 1577.73 ms │                       1567.17 ms │     no change │
│ QQuery 34 │ 1607.58 ms │                       1566.96 ms │     no change │
│ QQuery 35 │  292.35 ms │                        298.07 ms │     no change │
│ QQuery 36 │   66.64 ms │                         70.53 ms │  1.06x slower │
│ QQuery 37 │   34.85 ms │                         36.12 ms │     no change │
│ QQuery 38 │   40.83 ms │                         40.93 ms │     no change │
│ QQuery 39 │  136.12 ms │                        141.76 ms │     no change │
│ QQuery 40 │   14.23 ms │                         14.73 ms │     no change │
│ QQuery 41 │   13.74 ms │                         13.73 ms │     no change │
│ QQuery 42 │   13.14 ms │                         13.20 ms │     no change │
└───────────┴────────────┴──────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 19489.98ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 19382.77ms │
│ Average Time (HEAD)                             │   453.26ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │   450.76ms │
│ Queries Faster                                  │          1 │
│ Queries Slower                                  │          1 │
│ Queries with No Change                          │         41 │
│ Queries with Failure                            │          0 │
└─────────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and hash-join-dynamic-pruning-bitmap
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃       hash-join-dynamic-pruning-bitmap ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.22 / 3.99 ±5.41 / 14.81 ms │           1.24 / 3.97 ±5.41 / 14.80 ms │     no change │
│ QQuery 1  │        11.77 / 11.86 ±0.06 / 11.94 ms │         11.66 / 12.01 ±0.20 / 12.24 ms │     no change │
│ QQuery 2  │        36.53 / 36.84 ±0.23 / 37.18 ms │         37.04 / 37.64 ±0.46 / 38.31 ms │     no change │
│ QQuery 3  │        32.04 / 32.64 ±0.71 / 34.02 ms │         31.44 / 32.07 ±0.60 / 32.98 ms │     no change │
│ QQuery 4  │     235.30 / 239.40 ±3.37 / 243.87 ms │      234.09 / 237.82 ±3.13 / 241.64 ms │     no change │
│ QQuery 5  │     272.70 / 277.07 ±2.87 / 281.74 ms │      272.16 / 274.95 ±3.29 / 281.33 ms │     no change │
│ QQuery 6  │           1.28 / 1.45 ±0.24 / 1.93 ms │            1.30 / 1.47 ±0.23 / 1.91 ms │     no change │
│ QQuery 7  │        12.85 / 13.20 ±0.38 / 13.80 ms │         12.70 / 12.91 ±0.13 / 13.11 ms │     no change │
│ QQuery 8  │     330.42 / 337.40 ±4.52 / 342.74 ms │      325.99 / 333.10 ±4.33 / 339.17 ms │     no change │
│ QQuery 9  │     465.15 / 475.29 ±7.02 / 482.81 ms │      473.82 / 479.90 ±4.33 / 485.23 ms │     no change │
│ QQuery 10 │        65.55 / 67.21 ±1.56 / 69.64 ms │         63.14 / 68.11 ±7.18 / 82.22 ms │     no change │
│ QQuery 11 │        75.79 / 76.53 ±0.40 / 76.98 ms │         75.20 / 77.97 ±5.01 / 87.96 ms │     no change │
│ QQuery 12 │     265.57 / 271.47 ±6.54 / 279.74 ms │      260.07 / 264.80 ±4.22 / 271.52 ms │     no change │
│ QQuery 13 │     365.05 / 372.87 ±6.56 / 380.74 ms │     358.52 / 386.56 ±24.24 / 424.98 ms │     no change │
│ QQuery 14 │     280.42 / 284.74 ±2.86 / 288.73 ms │      275.51 / 283.19 ±5.22 / 290.53 ms │     no change │
│ QQuery 15 │     280.11 / 286.43 ±3.32 / 288.99 ms │      280.82 / 288.51 ±4.17 / 292.09 ms │     no change │
│ QQuery 16 │    613.15 / 624.60 ±10.75 / 643.39 ms │      623.92 / 634.55 ±7.56 / 646.22 ms │     no change │
│ QQuery 17 │     621.23 / 630.70 ±8.14 / 643.10 ms │     616.98 / 634.95 ±14.04 / 653.05 ms │     no change │
│ QQuery 18 │ 1264.03 / 1284.25 ±17.17 / 1312.93 ms │  1272.06 / 1309.46 ±25.97 / 1345.63 ms │     no change │
│ QQuery 19 │       27.41 / 33.00 ±10.27 / 53.53 ms │         27.75 / 28.04 ±0.23 / 28.38 ms │ +1.18x faster │
│ QQuery 20 │     511.28 / 521.67 ±8.45 / 537.08 ms │     519.85 / 543.83 ±38.20 / 620.00 ms │     no change │
│ QQuery 21 │     512.23 / 519.88 ±7.36 / 530.69 ms │     505.84 / 518.68 ±10.65 / 537.34 ms │     no change │
│ QQuery 22 │  990.30 / 1028.52 ±28.61 / 1066.43 ms │  1007.09 / 1019.68 ±20.21 / 1060.00 ms │     no change │
│ QQuery 23 │ 3144.97 / 3252.51 ±88.03 / 3407.99 ms │ 3095.28 / 3234.57 ±119.85 / 3422.36 ms │     no change │
│ QQuery 24 │      40.98 / 54.09 ±25.32 / 104.73 ms │       40.96 / 69.58 ±34.97 / 120.47 ms │  1.29x slower │
│ QQuery 25 │   106.52 / 163.24 ±111.51 / 386.26 ms │    104.99 / 188.33 ±162.88 / 514.08 ms │  1.15x slower │
│ QQuery 26 │        41.24 / 42.17 ±0.73 / 43.16 ms │         41.30 / 42.73 ±1.23 / 44.79 ms │     no change │
│ QQuery 27 │     516.00 / 527.53 ±9.19 / 543.55 ms │      514.85 / 522.18 ±4.63 / 527.11 ms │     no change │
│ QQuery 28 │ 2890.23 / 2926.28 ±34.08 / 2986.56 ms │  2874.28 / 2901.26 ±20.22 / 2934.73 ms │     no change │
│ QQuery 29 │        41.90 / 43.77 ±3.34 / 50.45 ms │         41.45 / 41.58 ±0.10 / 41.70 ms │ +1.05x faster │
│ QQuery 30 │    307.40 / 316.01 ±10.09 / 335.38 ms │      308.77 / 314.15 ±5.66 / 322.13 ms │     no change │
│ QQuery 31 │     283.26 / 291.30 ±6.06 / 298.64 ms │     268.36 / 288.91 ±18.54 / 320.89 ms │     no change │
│ QQuery 32 │ 1048.87 / 1117.20 ±66.69 / 1220.19 ms │ 1041.16 / 1220.30 ±236.39 / 1680.62 ms │  1.09x slower │
│ QQuery 33 │ 1577.73 / 1592.28 ±14.22 / 1619.28 ms │ 1567.17 / 1701.53 ±190.36 / 2073.81 ms │  1.07x slower │
│ QQuery 34 │ 1607.58 / 1652.39 ±53.12 / 1756.83 ms │  1566.96 / 1616.63 ±28.22 / 1650.70 ms │     no change │
│ QQuery 35 │    292.35 / 349.87 ±71.76 / 489.22 ms │     298.07 / 349.89 ±60.62 / 460.05 ms │     no change │
│ QQuery 36 │        66.64 / 75.28 ±6.24 / 85.57 ms │         70.53 / 82.18 ±6.68 / 89.60 ms │  1.09x slower │
│ QQuery 37 │        34.85 / 37.65 ±3.50 / 44.43 ms │         36.12 / 38.08 ±2.80 / 43.63 ms │     no change │
│ QQuery 38 │        40.83 / 46.64 ±4.25 / 52.75 ms │         40.93 / 42.61 ±1.11 / 43.77 ms │ +1.09x faster │
│ QQuery 39 │    136.12 / 154.49 ±10.25 / 166.38 ms │     141.76 / 158.84 ±12.50 / 174.99 ms │     no change │
│ QQuery 40 │        14.23 / 14.66 ±0.45 / 15.50 ms │         14.73 / 15.21 ±0.53 / 16.10 ms │     no change │
│ QQuery 41 │        13.74 / 16.85 ±5.91 / 28.67 ms │         13.73 / 13.86 ±0.11 / 14.00 ms │ +1.22x faster │
│ QQuery 42 │        13.14 / 13.36 ±0.14 / 13.56 ms │         13.20 / 14.41 ±1.99 / 18.37 ms │  1.08x slower │
└───────────┴───────────────────────────────────────┴────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                               │ 20118.57ms │
│ Total Time (hash-join-dynamic-pruning-bitmap)   │ 20341.01ms │
│ Average Time (HEAD)                             │   467.87ms │
│ Average Time (hash-join-dynamic-pruning-bitmap) │   473.05ms │
│ Queries Faster                                  │          4 │
│ Queries Slower                                  │          6 │
│ Queries with No Change                          │         33 │
│ Queries with Failure                            │          0 │
└─────────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 105.0s
Peak memory 17.8 GiB
Avg memory 6.0 GiB
CPU user 998.5s
CPU sys 92.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 105.0s
Peak memory 16.6 GiB
Avg memory 6.0 GiB
CPU user 993.8s
CPU sys 93.6s
Peak spill 0 B

File an issue against this benchmark runner

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

Labels

physical-plan Changes to the physical-plan crate proto Related to proto crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement dynamic discrete pruning through a join

5 participants