Skip to content

[vibebench] feat: implement GroupJoin optimization (Moerkotte & Neumann, VLDB 2011)#21015

Open
Dandandan wants to merge 5 commits intoapache:mainfrom
Dandandan:groupjoin
Open

[vibebench] feat: implement GroupJoin optimization (Moerkotte & Neumann, VLDB 2011)#21015
Dandandan wants to merge 5 commits intoapache:mainfrom
Dandandan:groupjoin

Conversation

@Dandandan
Copy link
Contributor

Fuses AggregateExec(Partial) on top of HashJoinExec into a single GroupJoinExec operator, avoiding materialization of the large intermediate join result when GROUP BY columns come from the left side and aggregate arguments come from the right side.

GroupJoinExec builds a hash table on the right (build) side by collecting all right partitions, then for each left (probe) row looks up matches and accumulates them directly into GroupsAccumulators via the existing GroupValues machinery.

The optimizer rule (GroupJoinOptimization) matches:

  • AggregateExec → HashJoinExec
  • AggregateExec → ProjectionExec → HashJoinExec

Preconditions: INNER join only, no join filter, non-empty GROUP BY, no GROUPING SETS / DISTINCT / ORDER BY / per-agg FILTER, group-by refs left side, agg args ref right side.

TPC-H Q12 now uses GroupJoinExec. All sqllogictest plan expectations updated accordingly. All query result tests pass.

Which issue does this PR close?

  • Closes #.

Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

Dandandan and others added 2 commits March 17, 2026 21:54
Fuses AggregateExec(Partial) on top of HashJoinExec into a single
GroupJoinExec operator, avoiding materialization of the large
intermediate join result when GROUP BY columns come from the left side
and aggregate arguments come from the right side.

GroupJoinExec builds a hash table on the right (build) side by
collecting all right partitions, then for each left (probe) row looks
up matches and accumulates them directly into GroupsAccumulators via
the existing GroupValues machinery.

The optimizer rule (`GroupJoinOptimization`) matches:
- AggregateExec → HashJoinExec
- AggregateExec → ProjectionExec → HashJoinExec

Preconditions: INNER join only, no join filter, non-empty GROUP BY,
no GROUPING SETS / DISTINCT / ORDER BY / per-agg FILTER, group-by
refs left side, agg args ref right side.

TPC-H Q12 now uses GroupJoinExec. All sqllogictest plan expectations
updated accordingly. All query result tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Dandandan
Copy link
Contributor Author

run benchmarks

@github-actions github-actions bot added optimizer Optimizer rules sqllogictest SQL Logic Tests (.slt) physical-plan Changes to the physical-plan crate labels Mar 17, 2026
@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078018774-388-4b8s6 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (29e3814) to 8142308 (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078018774-389-zbr5z 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (29e3814) to 8142308 (merge-base) diff using: tpcds
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078018774-390-4dswp 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (29e3814) to 8142308 (merge-base) diff using: tpch
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃                       groupjoin ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 45.62 / 46.43 ±0.78 / 47.72 ms │  45.49 / 46.19 ±0.91 / 47.98 ms │    no change │
│ QQuery 2  │ 24.42 / 24.68 ±0.24 / 25.07 ms │  23.99 / 24.53 ±0.27 / 24.73 ms │    no change │
│ QQuery 3  │ 33.27 / 33.83 ±0.88 / 35.57 ms │  33.09 / 33.46 ±0.26 / 33.81 ms │    no change │
│ QQuery 4  │ 21.07 / 21.78 ±0.58 / 22.57 ms │  22.21 / 22.99 ±0.55 / 23.69 ms │ 1.06x slower │
│ QQuery 5  │ 49.27 / 50.32 ±1.04 / 52.26 ms │  50.22 / 51.52 ±1.58 / 53.92 ms │    no change │
│ QQuery 6  │ 17.64 / 17.93 ±0.17 / 18.08 ms │  17.55 / 17.72 ±0.21 / 18.13 ms │    no change │
│ QQuery 7  │ 56.59 / 57.86 ±1.51 / 60.46 ms │  55.87 / 57.03 ±0.84 / 58.18 ms │    no change │
│ QQuery 8  │ 50.27 / 50.80 ±0.58 / 51.89 ms │  50.69 / 50.94 ±0.33 / 51.59 ms │    no change │
│ QQuery 9  │ 56.13 / 56.66 ±0.33 / 57.17 ms │  55.48 / 56.51 ±1.13 / 58.65 ms │    no change │
│ QQuery 10 │ 72.80 / 73.89 ±0.93 / 75.58 ms │  72.85 / 73.90 ±1.38 / 76.60 ms │    no change │
│ QQuery 11 │ 16.33 / 16.62 ±0.25 / 17.06 ms │  16.12 / 16.46 ±0.22 / 16.82 ms │    no change │
│ QQuery 12 │ 28.33 / 28.55 ±0.20 / 28.88 ms │ 95.94 / 99.24 ±3.03 / 104.96 ms │ 3.48x slower │
│ QQuery 13 │ 38.73 / 40.20 ±1.19 / 41.89 ms │  40.91 / 41.78 ±0.69 / 42.75 ms │    no change │
│ QQuery 14 │ 28.98 / 29.30 ±0.23 / 29.57 ms │  29.23 / 30.32 ±1.11 / 32.38 ms │    no change │
│ QQuery 15 │ 36.07 / 36.56 ±0.60 / 37.74 ms │  36.09 / 36.75 ±0.71 / 37.77 ms │    no change │
│ QQuery 16 │ 17.48 / 17.85 ±0.33 / 18.44 ms │  17.63 / 17.81 ±0.24 / 18.28 ms │    no change │
│ QQuery 17 │ 73.00 / 74.11 ±0.67 / 75.06 ms │  74.57 / 76.73 ±2.38 / 80.29 ms │    no change │
│ QQuery 18 │ 79.27 / 80.76 ±1.39 / 82.58 ms │  81.91 / 83.58 ±1.02 / 84.98 ms │    no change │
│ QQuery 19 │ 38.87 / 39.73 ±0.73 / 40.82 ms │  38.47 / 39.11 ±0.72 / 40.50 ms │    no change │
│ QQuery 20 │ 42.05 / 42.59 ±0.50 / 43.39 ms │  43.68 / 44.25 ±0.36 / 44.75 ms │    no change │
│ QQuery 21 │ 66.64 / 68.80 ±1.74 / 71.13 ms │  67.96 / 70.17 ±1.86 / 72.67 ms │    no change │
│ QQuery 22 │ 19.68 / 20.12 ±0.41 / 20.75 ms │  19.53 / 20.06 ±0.65 / 21.31 ms │    no change │
└───────────┴────────────────────────────────┴─────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary        ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)        │  929.35ms │
│ Total Time (groupjoin)   │ 1011.05ms │
│ Average Time (HEAD)      │   42.24ms │
│ Average Time (groupjoin) │   45.96ms │
│ Queries Faster           │         0 │
│ Queries Slower           │         2 │
│ Queries with No Change   │        20 │
│ Queries with Failure     │         0 │
└──────────────────────────┴───────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 4.9s
Peak memory 4.1 GiB
Avg memory 3.6 GiB
CPU user 33.1s
CPU sys 3.1s
Disk read 0 B
Disk write 136.0 KiB

tpch — branch

Metric Value
Wall time 5.3s
Peak memory 5.1 GiB
Avg memory 4.1 GiB
CPU user 37.1s
CPU sys 3.6s
Disk read 0 B
Disk write 84.0 KiB

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃                                     HEAD ┃                                groupjoin ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │           46.88 / 48.05 ±0.78 / 49.28 ms │           46.43 / 47.31 ±0.75 / 48.68 ms │ no change │
│ QQuery 2  │        149.70 / 151.31 ±1.06 / 152.96 ms │        149.63 / 150.75 ±0.99 / 152.37 ms │ no change │
│ QQuery 3  │        114.57 / 116.37 ±1.73 / 119.46 ms │        115.07 / 115.68 ±0.58 / 116.46 ms │ no change │
│ QQuery 4  │    1285.83 / 1300.48 ±11.49 / 1314.40 ms │    1282.33 / 1306.72 ±19.15 / 1337.98 ms │ no change │
│ QQuery 5  │        181.06 / 182.62 ±1.27 / 184.59 ms │        182.17 / 184.27 ±1.46 / 186.09 ms │ no change │
│ QQuery 6  │     995.50 / 1020.93 ±25.15 / 1055.06 ms │     995.78 / 1031.46 ±25.40 / 1064.49 ms │ no change │
│ QQuery 7  │        359.02 / 362.17 ±2.64 / 366.68 ms │        357.40 / 360.94 ±3.06 / 365.69 ms │ no change │
│ QQuery 8  │        119.88 / 120.91 ±1.16 / 122.92 ms │        118.74 / 120.17 ±1.15 / 121.43 ms │ no change │
│ QQuery 9  │        110.87 / 113.24 ±2.55 / 117.82 ms │        115.47 / 117.21 ±1.18 / 119.13 ms │ no change │
│ QQuery 10 │        112.01 / 114.04 ±1.49 / 116.61 ms │        112.23 / 112.88 ±0.76 / 114.35 ms │ no change │
│ QQuery 11 │        878.72 / 884.57 ±4.97 / 891.92 ms │        875.36 / 879.99 ±3.68 / 885.32 ms │ no change │
│ QQuery 12 │           49.20 / 50.28 ±0.65 / 51.17 ms │           48.20 / 50.06 ±1.70 / 53.07 ms │ no change │
│ QQuery 13 │        407.92 / 409.49 ±1.29 / 411.45 ms │        407.35 / 409.60 ±1.30 / 411.15 ms │ no change │
│ QQuery 14 │     1060.88 / 1067.24 ±5.45 / 1076.50 ms │     1064.19 / 1070.68 ±4.06 / 1076.80 ms │ no change │
│ QQuery 15 │           17.72 / 18.93 ±1.16 / 20.73 ms │           17.73 / 18.32 ±0.70 / 19.66 ms │ no change │
│ QQuery 16 │           43.50 / 44.57 ±0.84 / 45.42 ms │           44.42 / 45.71 ±0.71 / 46.44 ms │ no change │
│ QQuery 17 │        244.87 / 246.15 ±1.05 / 247.70 ms │        242.18 / 244.13 ±1.78 / 246.67 ms │ no change │
│ QQuery 18 │        134.02 / 137.25 ±2.04 / 140.43 ms │        132.59 / 133.50 ±0.79 / 134.95 ms │ no change │
│ QQuery 19 │        160.69 / 160.79 ±0.07 / 160.90 ms │        158.11 / 159.52 ±1.03 / 161.09 ms │ no change │
│ QQuery 20 │           15.99 / 16.56 ±0.80 / 18.12 ms │           15.43 / 15.97 ±0.38 / 16.36 ms │ no change │
│ QQuery 21 │           23.61 / 24.21 ±0.59 / 25.27 ms │           22.89 / 23.31 ±0.49 / 24.21 ms │ no change │
│ QQuery 22 │        494.19 / 496.48 ±1.92 / 499.38 ms │        495.68 / 498.01 ±2.70 / 503.21 ms │ no change │
│ QQuery 23 │        922.00 / 932.59 ±5.47 / 937.82 ms │        928.54 / 932.42 ±2.96 / 936.02 ms │ no change │
│ QQuery 24 │        424.04 / 427.63 ±2.84 / 432.65 ms │        425.78 / 428.15 ±1.74 / 431.04 ms │ no change │
│ QQuery 25 │        355.53 / 357.74 ±1.78 / 359.96 ms │        358.13 / 360.35 ±2.52 / 364.95 ms │ no change │
│ QQuery 26 │           86.48 / 87.17 ±0.74 / 88.57 ms │           85.32 / 87.24 ±1.72 / 89.56 ms │ no change │
│ QQuery 27 │        350.34 / 353.75 ±4.87 / 363.20 ms │        350.38 / 354.75 ±2.87 / 358.33 ms │ no change │
│ QQuery 28 │        154.37 / 154.90 ±0.30 / 155.24 ms │        153.05 / 154.72 ±1.29 / 156.74 ms │ no change │
│ QQuery 29 │        300.03 / 302.76 ±2.31 / 306.88 ms │        301.18 / 303.66 ±1.49 / 305.69 ms │ no change │
│ QQuery 30 │           48.14 / 50.19 ±1.64 / 52.04 ms │           48.14 / 49.91 ±1.41 / 52.04 ms │ no change │
│ QQuery 31 │        175.67 / 177.43 ±1.53 / 179.96 ms │        176.67 / 178.46 ±1.10 / 180.13 ms │ no change │
│ QQuery 32 │           59.07 / 61.13 ±1.48 / 63.24 ms │           60.60 / 62.10 ±1.32 / 63.97 ms │ no change │
│ QQuery 33 │        147.36 / 148.50 ±1.02 / 150.29 ms │        146.57 / 149.34 ±1.53 / 150.96 ms │ no change │
│ QQuery 34 │        108.05 / 109.50 ±1.72 / 112.77 ms │        108.48 / 109.69 ±1.53 / 112.46 ms │ no change │
│ QQuery 35 │        112.75 / 114.33 ±0.86 / 115.16 ms │        111.68 / 113.80 ±1.54 / 115.86 ms │ no change │
│ QQuery 36 │        215.40 / 219.58 ±3.38 / 224.77 ms │        219.70 / 221.84 ±2.38 / 226.45 ms │ no change │
│ QQuery 37 │        178.88 / 181.68 ±1.92 / 184.88 ms │        179.70 / 185.06 ±4.54 / 190.36 ms │ no change │
│ QQuery 38 │           90.99 / 91.68 ±0.82 / 93.11 ms │           87.56 / 91.88 ±2.64 / 95.44 ms │ no change │
│ QQuery 39 │        134.76 / 136.74 ±1.39 / 137.95 ms │        136.06 / 138.12 ±1.68 / 140.41 ms │ no change │
│ QQuery 40 │        114.65 / 120.94 ±8.12 / 135.15 ms │        111.11 / 116.01 ±5.31 / 126.09 ms │ no change │
│ QQuery 41 │           18.45 / 19.18 ±0.65 / 20.13 ms │           18.21 / 19.38 ±0.89 / 20.55 ms │ no change │
│ QQuery 42 │        108.48 / 109.34 ±0.75 / 110.30 ms │        107.84 / 109.13 ±1.13 / 110.93 ms │ no change │
│ QQuery 43 │           84.69 / 85.48 ±0.76 / 86.81 ms │           84.71 / 85.71 ±0.61 / 86.34 ms │ no change │
│ QQuery 44 │           16.92 / 17.48 ±0.56 / 18.53 ms │           16.97 / 17.50 ±0.37 / 18.12 ms │ no change │
│ QQuery 45 │           55.79 / 57.14 ±1.34 / 59.38 ms │           55.59 / 57.17 ±1.32 / 59.02 ms │ no change │
│ QQuery 46 │        233.40 / 235.90 ±1.40 / 237.05 ms │        236.00 / 237.32 ±1.13 / 239.16 ms │ no change │
│ QQuery 47 │        703.06 / 708.81 ±4.62 / 715.06 ms │        693.97 / 702.43 ±4.74 / 708.24 ms │ no change │
│ QQuery 48 │        294.69 / 295.99 ±0.88 / 297.21 ms │        290.11 / 293.97 ±3.42 / 298.36 ms │ no change │
│ QQuery 49 │        260.12 / 264.15 ±3.55 / 270.58 ms │        262.71 / 265.27 ±1.98 / 268.30 ms │ no change │
│ QQuery 50 │        227.41 / 233.78 ±5.26 / 242.82 ms │        234.64 / 238.54 ±2.53 / 242.31 ms │ no change │
│ QQuery 51 │        184.10 / 188.22 ±2.50 / 190.55 ms │        187.20 / 189.32 ±2.20 / 192.29 ms │ no change │
│ QQuery 52 │        107.98 / 109.83 ±1.86 / 113.19 ms │        108.26 / 109.74 ±1.09 / 111.05 ms │ no change │
│ QQuery 53 │        103.70 / 104.89 ±0.61 / 105.30 ms │        105.90 / 106.49 ±0.42 / 106.90 ms │ no change │
│ QQuery 54 │        153.59 / 155.21 ±0.99 / 156.35 ms │        153.03 / 154.14 ±1.03 / 155.82 ms │ no change │
│ QQuery 55 │        107.45 / 109.90 ±1.97 / 112.58 ms │        108.30 / 110.01 ±0.87 / 110.67 ms │ no change │
│ QQuery 56 │        147.61 / 148.96 ±0.73 / 149.59 ms │        147.36 / 148.81 ±0.98 / 150.41 ms │ no change │
│ QQuery 57 │        183.26 / 186.31 ±2.38 / 190.34 ms │        184.39 / 187.16 ±1.55 / 189.14 ms │ no change │
│ QQuery 58 │        301.10 / 307.10 ±4.32 / 312.26 ms │        305.80 / 312.95 ±7.08 / 325.01 ms │ no change │
│ QQuery 59 │        202.53 / 204.68 ±1.35 / 206.38 ms │        203.59 / 204.89 ±0.85 / 205.98 ms │ no change │
│ QQuery 60 │        149.43 / 151.59 ±1.59 / 153.41 ms │        151.42 / 152.28 ±0.91 / 153.69 ms │ no change │
│ QQuery 61 │        176.90 / 177.85 ±0.95 / 179.57 ms │        177.35 / 178.92 ±1.19 / 180.44 ms │ no change │
│ QQuery 62 │        928.64 / 938.87 ±5.28 / 942.99 ms │       894.86 / 918.42 ±33.58 / 984.67 ms │ no change │
│ QQuery 63 │        106.11 / 107.99 ±1.53 / 110.45 ms │        106.56 / 108.98 ±1.35 / 110.20 ms │ no change │
│ QQuery 64 │        710.96 / 716.62 ±3.68 / 722.56 ms │        708.00 / 714.52 ±5.06 / 722.83 ms │ no change │
│ QQuery 65 │        253.15 / 257.55 ±2.54 / 260.23 ms │        254.78 / 258.62 ±5.09 / 268.48 ms │ no change │
│ QQuery 66 │       248.65 / 263.35 ±15.25 / 285.25 ms │        250.52 / 261.16 ±7.85 / 273.88 ms │ no change │
│ QQuery 67 │        308.08 / 315.66 ±7.95 / 330.43 ms │        308.62 / 317.47 ±7.42 / 330.22 ms │ no change │
│ QQuery 68 │        283.45 / 286.74 ±3.06 / 291.68 ms │        282.62 / 286.67 ±2.50 / 290.30 ms │ no change │
│ QQuery 69 │        108.22 / 109.71 ±1.32 / 111.65 ms │        107.83 / 109.67 ±1.54 / 112.12 ms │ no change │
│ QQuery 70 │        339.84 / 348.11 ±6.36 / 359.46 ms │       337.40 / 350.07 ±10.72 / 369.36 ms │ no change │
│ QQuery 71 │        137.21 / 140.33 ±2.54 / 143.65 ms │        136.53 / 139.01 ±1.64 / 140.96 ms │ no change │
│ QQuery 72 │       696.26 / 717.68 ±13.66 / 735.53 ms │        718.10 / 725.56 ±5.44 / 731.50 ms │ no change │
│ QQuery 73 │        103.51 / 106.23 ±2.15 / 108.33 ms │        103.31 / 104.44 ±1.43 / 107.22 ms │ no change │
│ QQuery 74 │        553.28 / 558.29 ±5.44 / 567.79 ms │        553.19 / 559.57 ±7.55 / 573.40 ms │ no change │
│ QQuery 75 │        286.29 / 288.75 ±1.89 / 291.67 ms │        285.30 / 288.14 ±2.38 / 292.00 ms │ no change │
│ QQuery 76 │        135.90 / 137.83 ±1.46 / 139.58 ms │        137.68 / 138.48 ±0.85 / 140.09 ms │ no change │
│ QQuery 77 │        198.83 / 200.52 ±1.44 / 202.99 ms │        200.28 / 201.79 ±1.20 / 203.66 ms │ no change │
│ QQuery 78 │        355.77 / 358.54 ±2.75 / 363.09 ms │        357.84 / 360.52 ±2.27 / 364.27 ms │ no change │
│ QQuery 79 │        234.62 / 236.46 ±1.26 / 238.05 ms │        236.29 / 238.64 ±3.88 / 246.33 ms │ no change │
│ QQuery 80 │        339.09 / 341.07 ±1.95 / 344.82 ms │        340.94 / 342.44 ±1.59 / 345.51 ms │ no change │
│ QQuery 81 │           31.20 / 31.95 ±0.68 / 33.11 ms │           30.12 / 31.70 ±1.25 / 33.63 ms │ no change │
│ QQuery 82 │        202.26 / 205.59 ±2.06 / 208.10 ms │        204.35 / 212.26 ±8.59 / 224.90 ms │ no change │
│ QQuery 83 │           46.17 / 47.14 ±0.98 / 48.87 ms │           46.12 / 48.26 ±2.58 / 53.03 ms │ no change │
│ QQuery 84 │           50.63 / 52.43 ±1.88 / 55.70 ms │           50.44 / 52.44 ±1.97 / 55.77 ms │ no change │
│ QQuery 85 │        152.71 / 155.65 ±1.86 / 157.50 ms │        152.62 / 154.16 ±1.08 / 155.87 ms │ no change │
│ QQuery 86 │           40.17 / 41.87 ±1.31 / 43.93 ms │           40.48 / 42.01 ±1.02 / 43.40 ms │ no change │
│ QQuery 87 │           86.52 / 90.05 ±2.31 / 93.08 ms │           89.81 / 92.23 ±2.50 / 97.00 ms │ no change │
│ QQuery 88 │        109.42 / 110.20 ±0.61 / 111.07 ms │        110.40 / 110.91 ±0.34 / 111.35 ms │ no change │
│ QQuery 89 │        120.43 / 122.54 ±1.39 / 124.66 ms │        121.39 / 123.11 ±1.08 / 124.37 ms │ no change │
│ QQuery 90 │           27.73 / 28.17 ±0.30 / 28.65 ms │           27.25 / 27.96 ±0.52 / 28.82 ms │ no change │
│ QQuery 91 │           66.92 / 68.56 ±0.89 / 69.51 ms │           64.95 / 66.78 ±1.22 / 67.93 ms │ no change │
│ QQuery 92 │           59.39 / 60.93 ±0.88 / 61.89 ms │           60.38 / 61.36 ±1.13 / 63.45 ms │ no change │
│ QQuery 93 │        194.15 / 195.73 ±1.44 / 198.07 ms │        191.13 / 193.15 ±2.13 / 197.24 ms │ no change │
│ QQuery 94 │           64.53 / 65.44 ±0.72 / 66.28 ms │           63.66 / 65.00 ±1.23 / 67.28 ms │ no change │
│ QQuery 95 │        135.59 / 138.44 ±1.61 / 140.31 ms │        136.71 / 139.12 ±1.33 / 140.64 ms │ no change │
│ QQuery 96 │           71.84 / 74.58 ±1.68 / 76.20 ms │           74.61 / 75.45 ±0.52 / 76.08 ms │ no change │
│ QQuery 97 │        129.48 / 132.78 ±2.13 / 135.19 ms │        131.13 / 133.03 ±1.64 / 135.25 ms │ no change │
│ QQuery 98 │        155.17 / 157.31 ±2.83 / 162.84 ms │        154.71 / 157.15 ±1.88 / 159.05 ms │ no change │
│ QQuery 99 │ 10726.22 / 10743.41 ±14.29 / 10762.82 ms │ 10750.97 / 10765.95 ±11.49 / 10779.89 ms │ no change │
└───────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 33939.72ms │
│ Total Time (groupjoin)   │ 33991.06ms │
│ Average Time (HEAD)      │   342.83ms │
│ Average Time (groupjoin) │   343.34ms │
│ Queries Faster           │          0 │
│ Queries Slower           │          0 │
│ Queries with No Change   │         99 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 170.0s
Peak memory 5.7 GiB
Avg memory 4.6 GiB
CPU user 269.2s
CPU sys 20.6s
Disk read 0 B
Disk write 652.1 MiB

tpcds — branch

Metric Value
Wall time 170.2s
Peak memory 6.0 GiB
Avg memory 4.8 GiB
CPU user 273.6s
CPU sys 21.6s
Disk read 0 B
Disk write 840.0 KiB

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                             groupjoin ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.64 / 4.96 ±6.46 / 17.88 ms │          1.61 / 4.88 ±6.40 / 17.67 ms │     no change │
│ QQuery 1  │        15.33 / 15.57 ±0.19 / 15.80 ms │        15.43 / 15.63 ±0.23 / 16.05 ms │     no change │
│ QQuery 2  │        56.55 / 57.14 ±0.34 / 57.46 ms │        56.55 / 56.89 ±0.20 / 57.11 ms │     no change │
│ QQuery 3  │        49.41 / 52.20 ±1.65 / 54.57 ms │        50.14 / 51.22 ±0.89 / 52.63 ms │     no change │
│ QQuery 4  │     287.44 / 296.97 ±5.19 / 302.92 ms │     296.31 / 302.03 ±4.23 / 307.01 ms │     no change │
│ QQuery 5  │     340.31 / 346.52 ±3.73 / 351.41 ms │     345.87 / 352.00 ±3.99 / 356.35 ms │     no change │
│ QQuery 6  │           5.62 / 6.33 ±0.64 / 7.43 ms │           5.37 / 6.12 ±0.43 / 6.60 ms │     no change │
│ QQuery 7  │        17.84 / 17.97 ±0.10 / 18.09 ms │        17.74 / 18.36 ±0.65 / 19.35 ms │     no change │
│ QQuery 8  │     422.88 / 426.05 ±2.84 / 430.57 ms │     426.92 / 435.95 ±9.53 / 447.85 ms │     no change │
│ QQuery 9  │    648.36 / 670.21 ±16.47 / 697.94 ms │     666.18 / 671.08 ±4.32 / 678.36 ms │     no change │
│ QQuery 10 │        92.80 / 94.73 ±1.92 / 97.23 ms │        93.02 / 94.88 ±1.98 / 98.68 ms │     no change │
│ QQuery 11 │     106.47 / 108.30 ±1.54 / 110.90 ms │     105.95 / 107.42 ±1.84 / 110.81 ms │     no change │
│ QQuery 12 │     341.45 / 348.41 ±4.95 / 354.78 ms │     340.43 / 350.39 ±5.28 / 355.10 ms │     no change │
│ QQuery 13 │     463.80 / 468.27 ±2.35 / 470.63 ms │     456.67 / 467.94 ±7.45 / 475.25 ms │     no change │
│ QQuery 14 │     347.72 / 356.85 ±4.82 / 360.42 ms │     355.63 / 362.02 ±4.22 / 367.03 ms │     no change │
│ QQuery 15 │    360.34 / 383.82 ±19.08 / 412.67 ms │    372.93 / 417.59 ±35.10 / 468.19 ms │  1.09x slower │
│ QQuery 16 │    727.20 / 739.00 ±16.49 / 771.31 ms │    740.81 / 764.85 ±19.83 / 789.57 ms │     no change │
│ QQuery 17 │    714.20 / 728.19 ±12.50 / 751.30 ms │    723.93 / 742.08 ±17.75 / 770.23 ms │     no change │
│ QQuery 18 │ 1408.03 / 1455.39 ±35.33 / 1513.96 ms │ 1436.65 / 1501.78 ±35.70 / 1544.82 ms │     no change │
│ QQuery 19 │        35.82 / 37.37 ±1.26 / 39.56 ms │        36.95 / 40.19 ±1.93 / 42.35 ms │  1.08x slower │
│ QQuery 20 │    707.92 / 723.11 ±15.39 / 743.60 ms │    716.17 / 727.94 ±15.24 / 757.11 ms │     no change │
│ QQuery 21 │     758.48 / 761.37 ±1.75 / 763.31 ms │     763.33 / 769.66 ±7.43 / 783.69 ms │     no change │
│ QQuery 22 │ 1130.87 / 1138.15 ±10.80 / 1159.43 ms │  1131.15 / 1142.11 ±9.70 / 1157.50 ms │     no change │
│ QQuery 23 │ 3191.04 / 3223.05 ±18.43 / 3245.85 ms │ 3233.28 / 3247.73 ±10.95 / 3260.44 ms │     no change │
│ QQuery 24 │     104.87 / 107.03 ±2.33 / 111.55 ms │      99.13 / 106.96 ±4.84 / 114.20 ms │     no change │
│ QQuery 25 │     141.62 / 144.29 ±2.17 / 148.15 ms │     142.44 / 143.29 ±0.95 / 145.12 ms │     no change │
│ QQuery 26 │     102.98 / 104.75 ±1.03 / 105.85 ms │     103.48 / 104.57 ±0.72 / 105.60 ms │     no change │
│ QQuery 27 │     850.81 / 855.06 ±5.32 / 864.12 ms │     848.28 / 854.14 ±2.98 / 856.20 ms │     no change │
│ QQuery 28 │ 7707.65 / 7763.79 ±35.46 / 7803.43 ms │ 7729.07 / 7783.48 ±29.10 / 7813.06 ms │     no change │
│ QQuery 29 │        56.96 / 59.90 ±4.53 / 68.83 ms │        56.65 / 62.43 ±7.28 / 75.16 ms │     no change │
│ QQuery 30 │     360.36 / 373.27 ±8.58 / 387.10 ms │     369.06 / 376.21 ±6.08 / 387.37 ms │     no change │
│ QQuery 31 │     371.37 / 380.32 ±6.70 / 390.01 ms │    377.54 / 391.63 ±13.61 / 410.83 ms │     no change │
│ QQuery 32 │ 1061.78 / 1084.86 ±27.38 / 1137.39 ms │ 1046.64 / 1067.93 ±19.45 / 1100.81 ms │     no change │
│ QQuery 33 │ 1455.60 / 1483.06 ±14.18 / 1494.76 ms │ 1471.02 / 1487.63 ±13.48 / 1511.18 ms │     no change │
│ QQuery 34 │  1476.57 / 1489.72 ±8.76 / 1499.69 ms │ 1471.26 / 1534.93 ±46.19 / 1591.82 ms │     no change │
│ QQuery 35 │     399.24 / 401.79 ±2.60 / 405.15 ms │     399.01 / 406.62 ±5.08 / 411.92 ms │     no change │
│ QQuery 36 │     113.47 / 120.85 ±4.52 / 126.46 ms │     114.05 / 123.34 ±5.66 / 128.94 ms │     no change │
│ QQuery 37 │        48.80 / 53.51 ±2.53 / 55.35 ms │        50.64 / 50.78 ±0.12 / 50.99 ms │ +1.05x faster │
│ QQuery 38 │        73.18 / 75.31 ±1.91 / 77.56 ms │        76.04 / 76.66 ±0.66 / 77.57 ms │     no change │
│ QQuery 39 │     208.08 / 218.09 ±7.72 / 231.21 ms │     224.96 / 231.66 ±5.13 / 238.80 ms │  1.06x slower │
│ QQuery 40 │        23.75 / 27.60 ±2.04 / 29.46 ms │        24.79 / 28.28 ±2.97 / 33.69 ms │     no change │
│ QQuery 41 │        22.42 / 23.34 ±1.12 / 25.48 ms │        21.20 / 22.31 ±0.65 / 23.12 ms │     no change │
│ QQuery 42 │        20.57 / 21.18 ±0.36 / 21.59 ms │        20.59 / 21.49 ±0.52 / 22.11 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 27247.64ms │
│ Total Time (groupjoin)   │ 27525.09ms │
│ Average Time (HEAD)      │   633.67ms │
│ Average Time (groupjoin) │   640.12ms │
│ Queries Faster           │          1 │
│ Queries Slower           │          3 │
│ Queries with No Change   │         39 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 137.4s
Peak memory 40.4 GiB
Avg memory 33.3 GiB
CPU user 1291.5s
CPU sys 88.6s
Disk read 0 B
Disk write 2.5 GiB

clickbench_partitioned — branch

Metric Value
Wall time 138.9s
Peak memory 44.4 GiB
Avg memory 32.6 GiB
CPU user 1296.4s
CPU sys 92.7s
Disk read 0 B
Disk write 772.0 KiB

@Dandandan
Copy link
Contributor Author

run benchmarks

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078231899-393-5tzdz 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (ad8fd74) to 6ab16cc (merge-base) diff using: tpch
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078231899-391-v4l6z 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (ad8fd74) to 6ab16cc (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4078231899-392-6hzxc 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing groupjoin (ad8fd74) to 6ab16cc (merge-base) diff using: tpcds
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃                         groupjoin ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 46.48 / 47.12 ±0.80 / 48.65 ms │    46.57 / 47.03 ±0.60 / 48.22 ms │    no change │
│ QQuery 2  │ 25.85 / 26.05 ±0.17 / 26.31 ms │    25.94 / 26.29 ±0.20 / 26.52 ms │    no change │
│ QQuery 3  │ 33.89 / 34.50 ±0.42 / 35.21 ms │ 327.20 / 335.75 ±8.05 / 348.83 ms │ 9.73x slower │
│ QQuery 4  │ 21.81 / 22.61 ±0.92 / 23.98 ms │    22.70 / 24.75 ±1.41 / 26.51 ms │ 1.09x slower │
│ QQuery 5  │ 50.42 / 51.94 ±1.58 / 54.79 ms │    52.65 / 54.93 ±1.69 / 56.73 ms │ 1.06x slower │
│ QQuery 6  │ 17.91 / 18.96 ±1.80 / 22.56 ms │    18.41 / 18.96 ±0.46 / 19.75 ms │    no change │
│ QQuery 7  │ 58.59 / 60.17 ±0.87 / 61.00 ms │    60.35 / 62.50 ±2.19 / 65.49 ms │    no change │
│ QQuery 8  │ 52.17 / 52.86 ±0.64 / 53.91 ms │    52.79 / 53.73 ±0.83 / 54.78 ms │    no change │
│ QQuery 9  │ 57.27 / 57.89 ±0.50 / 58.60 ms │    57.77 / 58.97 ±0.88 / 60.15 ms │    no change │
│ QQuery 10 │ 73.54 / 74.77 ±0.71 / 75.59 ms │    74.75 / 77.78 ±1.68 / 79.35 ms │    no change │
│ QQuery 11 │ 17.48 / 17.93 ±0.31 / 18.39 ms │    18.00 / 18.93 ±0.80 / 20.04 ms │ 1.06x slower │
│ QQuery 12 │ 28.86 / 29.19 ±0.33 / 29.78 ms │    89.70 / 91.78 ±1.99 / 95.16 ms │ 3.14x slower │
│ QQuery 13 │ 41.27 / 41.87 ±0.99 / 43.84 ms │    41.09 / 42.95 ±1.50 / 44.89 ms │    no change │
│ QQuery 14 │ 29.39 / 30.16 ±0.62 / 31.28 ms │    30.17 / 30.53 ±0.38 / 31.21 ms │    no change │
│ QQuery 15 │ 36.73 / 37.55 ±0.45 / 37.93 ms │    37.79 / 38.64 ±0.51 / 39.28 ms │    no change │
│ QQuery 16 │ 18.11 / 18.54 ±0.41 / 19.32 ms │    18.54 / 19.32 ±0.66 / 20.14 ms │    no change │
│ QQuery 17 │ 78.36 / 79.44 ±0.78 / 80.56 ms │    78.93 / 79.88 ±1.13 / 82.09 ms │    no change │
│ QQuery 18 │ 81.60 / 81.94 ±0.33 / 82.53 ms │    84.56 / 85.67 ±0.91 / 86.71 ms │    no change │
│ QQuery 19 │ 38.99 / 39.52 ±0.66 / 40.78 ms │    39.55 / 40.13 ±0.68 / 41.39 ms │    no change │
│ QQuery 20 │ 44.38 / 45.35 ±0.79 / 46.31 ms │    43.81 / 45.44 ±1.22 / 47.46 ms │    no change │
│ QQuery 21 │ 70.65 / 71.79 ±0.94 / 73.37 ms │    71.99 / 74.38 ±2.30 / 77.39 ms │    no change │
│ QQuery 22 │ 20.27 / 20.67 ±0.32 / 21.23 ms │    21.10 / 22.02 ±0.69 / 22.83 ms │ 1.07x slower │
└───────────┴────────────────────────────────┴───────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary        ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)        │  960.83ms │
│ Total Time (groupjoin)   │ 1350.35ms │
│ Average Time (HEAD)      │   43.67ms │
│ Average Time (groupjoin) │   61.38ms │
│ Queries Faster           │         0 │
│ Queries Slower           │         6 │
│ Queries with No Change   │        16 │
│ Queries with Failure     │         0 │
└──────────────────────────┴───────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.1s
Peak memory 4.0 GiB
Avg memory 3.6 GiB
CPU user 34.0s
CPU sys 3.4s
Disk read 0 B
Disk write 140.0 KiB

tpch — branch

Metric Value
Wall time 7.0s
Peak memory 5.5 GiB
Avg memory 4.7 GiB
CPU user 40.9s
CPU sys 3.7s
Disk read 0 B
Disk write 72.0 KiB

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                     HEAD ┃                                groupjoin ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           47.74 / 48.54 ±0.67 / 49.35 ms │           48.83 / 49.42 ±0.60 / 50.32 ms │     no change │
│ QQuery 2  │        150.13 / 150.56 ±0.26 / 150.90 ms │        151.21 / 152.64 ±0.91 / 153.84 ms │     no change │
│ QQuery 3  │        115.46 / 116.22 ±0.58 / 117.01 ms │        116.64 / 117.03 ±0.31 / 117.53 ms │     no change │
│ QQuery 4  │    1408.21 / 1439.98 ±20.49 / 1460.22 ms │    1419.60 / 1453.44 ±19.79 / 1472.71 ms │     no change │
│ QQuery 5  │        183.10 / 184.54 ±1.42 / 186.74 ms │        184.28 / 185.63 ±1.16 / 187.64 ms │     no change │
│ QQuery 6  │    1020.40 / 1055.95 ±32.83 / 1098.84 ms │    1010.47 / 1047.18 ±23.14 / 1072.57 ms │     no change │
│ QQuery 7  │        356.28 / 359.63 ±2.14 / 362.91 ms │        362.80 / 366.12 ±3.70 / 371.90 ms │     no change │
│ QQuery 8  │        118.95 / 120.13 ±0.72 / 120.99 ms │        122.14 / 122.86 ±0.47 / 123.46 ms │     no change │
│ QQuery 9  │        117.56 / 120.26 ±3.87 / 127.94 ms │        115.37 / 116.99 ±2.08 / 121.04 ms │     no change │
│ QQuery 10 │        112.84 / 113.86 ±0.91 / 115.52 ms │        115.20 / 117.08 ±1.25 / 118.89 ms │     no change │
│ QQuery 11 │    1002.03 / 1013.91 ±10.39 / 1032.37 ms │    1042.79 / 1057.85 ±10.46 / 1074.15 ms │     no change │
│ QQuery 12 │           49.41 / 50.44 ±0.91 / 51.96 ms │           48.26 / 51.06 ±1.71 / 53.59 ms │     no change │
│ QQuery 13 │        411.55 / 412.93 ±0.71 / 413.56 ms │        417.88 / 423.32 ±4.04 / 428.12 ms │     no change │
│ QQuery 14 │     1074.42 / 1083.72 ±5.78 / 1092.47 ms │     1088.35 / 1097.63 ±5.02 / 1102.68 ms │     no change │
│ QQuery 15 │           18.28 / 19.36 ±1.16 / 21.13 ms │           19.47 / 20.05 ±0.66 / 21.28 ms │     no change │
│ QQuery 16 │           45.43 / 46.49 ±1.44 / 49.25 ms │           46.05 / 46.51 ±0.44 / 47.33 ms │     no change │
│ QQuery 17 │        246.23 / 248.67 ±1.33 / 250.14 ms │        249.57 / 253.04 ±2.11 / 255.10 ms │     no change │
│ QQuery 18 │        132.75 / 136.49 ±2.24 / 138.57 ms │        137.91 / 138.65 ±0.78 / 139.83 ms │     no change │
│ QQuery 19 │        158.25 / 160.02 ±1.88 / 163.40 ms │        164.54 / 166.60 ±1.12 / 167.49 ms │     no change │
│ QQuery 20 │           16.25 / 17.24 ±0.97 / 18.43 ms │           16.76 / 17.47 ±0.45 / 18.07 ms │     no change │
│ QQuery 21 │           24.72 / 25.09 ±0.34 / 25.50 ms │           25.06 / 25.67 ±0.48 / 26.17 ms │     no change │
│ QQuery 22 │        494.10 / 500.47 ±9.81 / 519.93 ms │        511.15 / 514.58 ±2.69 / 518.10 ms │     no change │
│ QQuery 23 │        952.61 / 955.93 ±3.79 / 962.51 ms │    1343.44 / 1360.51 ±10.48 / 1373.99 ms │  1.42x slower │
│ QQuery 24 │        426.43 / 431.58 ±4.62 / 440.24 ms │        445.63 / 448.47 ±2.47 / 451.63 ms │     no change │
│ QQuery 25 │        359.47 / 361.96 ±1.85 / 365.23 ms │        363.71 / 367.80 ±2.68 / 371.11 ms │     no change │
│ QQuery 26 │           83.83 / 87.66 ±2.01 / 89.63 ms │           86.68 / 88.38 ±2.01 / 91.74 ms │     no change │
│ QQuery 27 │        349.13 / 352.48 ±2.19 / 356.02 ms │        355.24 / 358.61 ±2.75 / 361.90 ms │     no change │
│ QQuery 28 │        154.28 / 155.92 ±2.01 / 159.06 ms │        156.74 / 158.64 ±1.47 / 161.00 ms │     no change │
│ QQuery 29 │        304.45 / 307.07 ±1.51 / 309.15 ms │        304.80 / 306.34 ±1.33 / 308.73 ms │     no change │
│ QQuery 30 │           49.31 / 51.61 ±1.44 / 53.57 ms │           52.39 / 53.47 ±0.99 / 54.89 ms │     no change │
│ QQuery 31 │        177.86 / 180.37 ±2.38 / 183.68 ms │        179.49 / 182.51 ±2.04 / 185.83 ms │     no change │
│ QQuery 32 │           60.93 / 61.71 ±0.89 / 63.44 ms │           62.43 / 63.98 ±1.18 / 65.23 ms │     no change │
│ QQuery 33 │        149.80 / 151.52 ±1.10 / 153.01 ms │        150.31 / 152.53 ±1.42 / 154.44 ms │     no change │
│ QQuery 34 │        109.91 / 111.90 ±1.23 / 113.59 ms │        110.26 / 111.33 ±0.73 / 112.17 ms │     no change │
│ QQuery 35 │        113.15 / 114.57 ±0.91 / 115.98 ms │        115.55 / 117.58 ±1.18 / 118.64 ms │     no change │
│ QQuery 36 │        225.39 / 227.44 ±1.48 / 230.01 ms │        218.73 / 224.86 ±4.54 / 229.63 ms │     no change │
│ QQuery 37 │        180.72 / 184.05 ±2.53 / 187.03 ms │        172.32 / 175.54 ±1.79 / 177.44 ms │     no change │
│ QQuery 38 │           92.46 / 95.09 ±1.48 / 96.88 ms │           94.47 / 95.16 ±0.56 / 95.99 ms │     no change │
│ QQuery 39 │        141.35 / 144.06 ±1.62 / 146.20 ms │        143.64 / 144.97 ±1.24 / 146.86 ms │     no change │
│ QQuery 40 │        119.75 / 124.23 ±5.05 / 133.95 ms │        116.56 / 122.34 ±5.17 / 131.70 ms │     no change │
│ QQuery 41 │           18.55 / 20.07 ±0.99 / 21.16 ms │           18.52 / 19.53 ±0.56 / 20.06 ms │     no change │
│ QQuery 42 │        109.26 / 110.73 ±1.25 / 112.43 ms │        110.50 / 111.38 ±0.90 / 112.96 ms │     no change │
│ QQuery 43 │           86.74 / 87.18 ±0.49 / 87.79 ms │           86.05 / 86.81 ±0.87 / 88.46 ms │     no change │
│ QQuery 44 │           18.00 / 18.67 ±0.76 / 20.15 ms │           18.33 / 18.62 ±0.32 / 19.20 ms │     no change │
│ QQuery 45 │           57.42 / 58.38 ±0.88 / 59.73 ms │           57.00 / 59.23 ±1.94 / 62.81 ms │     no change │
│ QQuery 46 │        247.69 / 249.71 ±3.19 / 256.05 ms │        239.26 / 242.85 ±2.05 / 245.30 ms │     no change │
│ QQuery 47 │        788.65 / 792.84 ±2.83 / 796.83 ms │        758.52 / 767.15 ±5.51 / 773.27 ms │     no change │
│ QQuery 48 │        292.59 / 298.04 ±4.12 / 303.93 ms │        295.09 / 300.45 ±4.34 / 307.75 ms │     no change │
│ QQuery 49 │        263.95 / 267.54 ±2.71 / 271.17 ms │        264.48 / 269.31 ±3.34 / 274.67 ms │     no change │
│ QQuery 50 │        241.17 / 246.98 ±4.73 / 255.49 ms │        238.66 / 245.16 ±3.80 / 249.76 ms │     no change │
│ QQuery 51 │        192.33 / 193.79 ±0.98 / 195.08 ms │        190.60 / 193.02 ±1.50 / 194.62 ms │     no change │
│ QQuery 52 │        111.02 / 111.51 ±0.42 / 112.22 ms │        109.98 / 111.69 ±1.02 / 112.86 ms │     no change │
│ QQuery 53 │        107.44 / 108.79 ±1.04 / 109.95 ms │        106.86 / 108.19 ±0.67 / 108.65 ms │     no change │
│ QQuery 54 │        157.77 / 159.50 ±1.35 / 161.30 ms │        156.44 / 158.14 ±2.29 / 162.63 ms │     no change │
│ QQuery 55 │        108.88 / 110.63 ±1.26 / 112.52 ms │        109.52 / 110.88 ±1.28 / 112.94 ms │     no change │
│ QQuery 56 │        151.01 / 152.25 ±1.25 / 154.53 ms │        149.88 / 152.55 ±1.71 / 154.64 ms │     no change │
│ QQuery 57 │        190.24 / 191.39 ±1.09 / 192.75 ms │        185.66 / 188.30 ±1.98 / 191.19 ms │     no change │
│ QQuery 58 │        305.88 / 309.99 ±4.22 / 317.86 ms │        304.35 / 305.27 ±0.66 / 306.19 ms │     no change │
│ QQuery 59 │        205.00 / 207.34 ±1.61 / 209.42 ms │        206.46 / 208.61 ±1.88 / 211.92 ms │     no change │
│ QQuery 60 │        152.69 / 153.84 ±0.78 / 155.06 ms │        153.61 / 155.37 ±1.08 / 156.63 ms │     no change │
│ QQuery 61 │        180.87 / 182.12 ±1.11 / 183.89 ms │        181.85 / 182.69 ±0.68 / 183.85 ms │     no change │
│ QQuery 62 │       926.56 / 957.38 ±24.20 / 987.56 ms │      924.36 / 976.57 ±45.64 / 1046.84 ms │     no change │
│ QQuery 63 │        108.03 / 110.28 ±1.69 / 111.96 ms │        109.08 / 110.30 ±1.51 / 113.24 ms │     no change │
│ QQuery 64 │        722.44 / 731.07 ±5.40 / 737.59 ms │        725.88 / 728.80 ±2.24 / 732.37 ms │     no change │
│ QQuery 65 │        264.16 / 270.61 ±6.51 / 283.08 ms │        262.45 / 265.64 ±3.46 / 271.38 ms │     no change │
│ QQuery 66 │       242.80 / 262.71 ±11.28 / 276.01 ms │        264.18 / 268.63 ±3.73 / 274.73 ms │     no change │
│ QQuery 67 │        328.95 / 336.58 ±6.26 / 346.46 ms │        320.29 / 328.65 ±6.48 / 339.55 ms │     no change │
│ QQuery 68 │        292.51 / 296.23 ±5.15 / 306.14 ms │        293.06 / 296.15 ±2.44 / 300.15 ms │     no change │
│ QQuery 69 │        106.96 / 108.35 ±1.23 / 110.53 ms │        109.71 / 110.38 ±0.65 / 111.30 ms │     no change │
│ QQuery 70 │        351.84 / 358.85 ±7.03 / 372.18 ms │        349.44 / 355.91 ±5.28 / 364.58 ms │     no change │
│ QQuery 71 │        137.41 / 139.81 ±2.04 / 142.83 ms │        137.88 / 140.23 ±2.22 / 143.81 ms │     no change │
│ QQuery 72 │        737.97 / 746.25 ±9.72 / 758.46 ms │        730.51 / 738.86 ±7.42 / 751.63 ms │     no change │
│ QQuery 73 │        105.94 / 108.38 ±1.78 / 111.13 ms │        105.56 / 106.80 ±1.33 / 108.95 ms │     no change │
│ QQuery 74 │        635.95 / 643.90 ±4.76 / 649.13 ms │        622.00 / 634.15 ±7.72 / 646.04 ms │     no change │
│ QQuery 75 │        291.60 / 295.29 ±2.42 / 299.20 ms │        293.62 / 295.73 ±1.84 / 298.84 ms │     no change │
│ QQuery 76 │        138.25 / 140.11 ±1.21 / 142.03 ms │        138.56 / 142.11 ±2.19 / 145.33 ms │     no change │
│ QQuery 77 │        200.61 / 202.44 ±0.96 / 203.33 ms │        199.82 / 201.44 ±0.98 / 202.50 ms │     no change │
│ QQuery 78 │        362.78 / 365.66 ±4.34 / 374.30 ms │        365.53 / 370.37 ±3.99 / 376.99 ms │     no change │
│ QQuery 79 │        243.70 / 246.92 ±2.60 / 251.60 ms │        240.07 / 245.13 ±3.66 / 249.34 ms │     no change │
│ QQuery 80 │        338.06 / 341.86 ±3.15 / 347.44 ms │        344.58 / 346.36 ±2.12 / 350.09 ms │     no change │
│ QQuery 81 │           31.62 / 32.91 ±1.10 / 34.74 ms │           32.36 / 33.44 ±1.08 / 35.49 ms │     no change │
│ QQuery 82 │        204.62 / 206.65 ±2.01 / 210.04 ms │        181.32 / 183.53 ±1.86 / 185.77 ms │ +1.13x faster │
│ QQuery 83 │           49.29 / 49.76 ±0.40 / 50.36 ms │           48.51 / 49.64 ±1.12 / 51.72 ms │     no change │
│ QQuery 84 │           52.12 / 52.72 ±0.76 / 54.03 ms │           52.23 / 52.89 ±0.53 / 53.63 ms │     no change │
│ QQuery 85 │        150.59 / 154.95 ±2.86 / 159.17 ms │        154.90 / 157.05 ±1.50 / 159.24 ms │     no change │
│ QQuery 86 │           40.94 / 42.23 ±0.80 / 43.17 ms │           41.56 / 42.86 ±1.35 / 45.19 ms │     no change │
│ QQuery 87 │          91.76 / 95.99 ±2.75 / 100.42 ms │          94.11 / 97.02 ±2.84 / 101.22 ms │     no change │
│ QQuery 88 │        113.71 / 114.92 ±0.83 / 116.25 ms │        113.47 / 114.78 ±0.94 / 116.08 ms │     no change │
│ QQuery 89 │        123.22 / 124.44 ±0.93 / 125.38 ms │        123.87 / 124.85 ±0.70 / 125.62 ms │     no change │
│ QQuery 90 │           28.79 / 29.48 ±0.68 / 30.64 ms │           29.09 / 29.85 ±0.59 / 30.65 ms │     no change │
│ QQuery 91 │           68.24 / 69.17 ±0.68 / 70.04 ms │           65.92 / 68.12 ±1.52 / 70.41 ms │     no change │
│ QQuery 92 │           61.92 / 62.82 ±0.64 / 63.53 ms │           62.25 / 63.26 ±0.94 / 64.92 ms │     no change │
│ QQuery 93 │        193.49 / 197.31 ±3.14 / 202.53 ms │        199.06 / 200.48 ±0.84 / 201.18 ms │     no change │
│ QQuery 94 │           66.21 / 67.18 ±1.02 / 69.14 ms │           66.87 / 67.69 ±0.60 / 68.40 ms │     no change │
│ QQuery 95 │        139.69 / 141.49 ±1.90 / 144.46 ms │        141.97 / 143.48 ±1.30 / 145.82 ms │     no change │
│ QQuery 96 │           77.34 / 77.80 ±0.66 / 79.11 ms │           76.60 / 78.00 ±0.87 / 79.35 ms │     no change │
│ QQuery 97 │        134.95 / 136.73 ±2.08 / 140.81 ms │        133.85 / 136.45 ±1.67 / 138.30 ms │     no change │
│ QQuery 98 │        156.62 / 159.06 ±2.12 / 162.00 ms │        154.65 / 158.18 ±2.66 / 162.34 ms │     no change │
│ QQuery 99 │ 10760.37 / 10833.62 ±46.45 / 10879.97 ms │ 10818.43 / 10881.64 ±36.76 / 10920.76 ms │     no change │
└───────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 34866.84ms │
│ Total Time (groupjoin)   │ 35414.48ms │
│ Average Time (HEAD)      │   352.19ms │
│ Average Time (groupjoin) │   357.72ms │
│ Queries Faster           │          1 │
│ Queries Slower           │          1 │
│ Queries with No Change   │         97 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 174.7s
Peak memory 5.9 GiB
Avg memory 4.7 GiB
CPU user 276.2s
CPU sys 21.2s
Disk read 0 B
Disk write 699.9 MiB

tpcds — branch

Metric Value
Wall time 177.4s
Peak memory 5.0 GiB
Avg memory 4.4 GiB
CPU user 276.8s
CPU sys 21.6s
Disk read 0 B
Disk write 152.0 KiB

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and groupjoin
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                             groupjoin ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.64 / 4.82 ±6.30 / 17.42 ms │          1.60 / 4.76 ±6.26 / 17.29 ms │    no change │
│ QQuery 1  │        14.78 / 14.95 ±0.17 / 15.24 ms │        14.46 / 14.96 ±0.32 / 15.41 ms │    no change │
│ QQuery 2  │        56.04 / 56.53 ±0.35 / 57.02 ms │        56.10 / 56.37 ±0.20 / 56.66 ms │    no change │
│ QQuery 3  │        49.17 / 51.52 ±1.27 / 52.71 ms │        48.80 / 50.40 ±1.21 / 52.03 ms │    no change │
│ QQuery 4  │     292.96 / 302.29 ±7.78 / 315.36 ms │     287.61 / 301.76 ±8.93 / 313.80 ms │    no change │
│ QQuery 5  │     349.27 / 352.19 ±2.19 / 354.82 ms │     346.51 / 350.35 ±2.78 / 353.68 ms │    no change │
│ QQuery 6  │           5.24 / 5.87 ±0.58 / 6.86 ms │          5.56 / 8.46 ±2.94 / 12.35 ms │ 1.44x slower │
│ QQuery 7  │        17.43 / 17.73 ±0.37 / 18.44 ms │        17.22 / 17.41 ±0.12 / 17.55 ms │    no change │
│ QQuery 8  │    415.15 / 433.21 ±14.42 / 458.77 ms │     423.03 / 427.16 ±3.68 / 432.95 ms │    no change │
│ QQuery 9  │     637.18 / 646.34 ±8.92 / 662.46 ms │     647.50 / 651.93 ±3.57 / 656.20 ms │    no change │
│ QQuery 10 │        91.08 / 94.70 ±3.36 / 99.34 ms │       91.29 / 94.71 ±3.39 / 100.04 ms │    no change │
│ QQuery 11 │     103.85 / 104.48 ±0.67 / 105.57 ms │     103.14 / 104.74 ±1.10 / 106.35 ms │    no change │
│ QQuery 12 │     343.79 / 347.02 ±2.60 / 350.98 ms │     344.37 / 351.30 ±5.77 / 361.38 ms │    no change │
│ QQuery 13 │    441.53 / 463.81 ±12.76 / 480.06 ms │     469.41 / 477.19 ±9.23 / 495.14 ms │    no change │
│ QQuery 14 │     356.20 / 361.09 ±4.37 / 367.07 ms │     350.16 / 354.79 ±3.59 / 359.01 ms │    no change │
│ QQuery 15 │     364.76 / 372.33 ±8.96 / 389.20 ms │    357.06 / 381.88 ±25.12 / 429.19 ms │    no change │
│ QQuery 16 │    710.24 / 731.37 ±21.72 / 772.26 ms │     714.84 / 727.29 ±8.92 / 738.65 ms │    no change │
│ QQuery 17 │     716.61 / 721.73 ±4.15 / 726.47 ms │    710.93 / 752.22 ±49.09 / 847.28 ms │    no change │
│ QQuery 18 │ 1405.55 / 1473.93 ±42.53 / 1526.33 ms │ 1434.93 / 1478.85 ±35.64 / 1543.75 ms │    no change │
│ QQuery 19 │        35.32 / 36.60 ±0.89 / 37.74 ms │      37.35 / 68.31 ±57.55 / 183.35 ms │ 1.87x slower │
│ QQuery 20 │    719.48 / 735.40 ±16.93 / 760.56 ms │    728.81 / 744.25 ±23.40 / 790.25 ms │    no change │
│ QQuery 21 │     763.02 / 768.93 ±3.76 / 773.78 ms │     771.53 / 773.43 ±2.06 / 777.27 ms │    no change │
│ QQuery 22 │  1128.15 / 1133.76 ±6.51 / 1145.89 ms │  1135.96 / 1138.96 ±2.35 / 1142.30 ms │    no change │
│ QQuery 23 │ 3155.70 / 3175.99 ±12.75 / 3190.23 ms │ 3166.58 / 3193.08 ±22.22 / 3231.66 ms │    no change │
│ QQuery 24 │     100.89 / 104.19 ±2.30 / 107.52 ms │     102.82 / 106.63 ±2.72 / 110.42 ms │    no change │
│ QQuery 25 │     139.28 / 141.48 ±1.93 / 144.51 ms │     139.72 / 142.36 ±2.19 / 146.19 ms │    no change │
│ QQuery 26 │     102.99 / 103.43 ±0.42 / 104.22 ms │     101.84 / 102.90 ±0.66 / 103.71 ms │    no change │
│ QQuery 27 │     849.32 / 858.35 ±8.96 / 874.11 ms │    853.79 / 862.73 ±12.28 / 886.78 ms │    no change │
│ QQuery 28 │ 7692.84 / 7748.01 ±32.13 / 7781.58 ms │ 7704.82 / 7728.01 ±24.64 / 7761.22 ms │    no change │
│ QQuery 29 │        55.78 / 60.12 ±4.98 / 69.43 ms │        56.11 / 59.17 ±3.20 / 64.87 ms │    no change │
│ QQuery 30 │     353.20 / 368.15 ±9.48 / 379.12 ms │     360.17 / 367.79 ±4.17 / 372.29 ms │    no change │
│ QQuery 31 │     360.34 / 372.35 ±8.81 / 382.79 ms │     374.01 / 383.94 ±9.93 / 402.44 ms │    no change │
│ QQuery 32 │ 1052.19 / 1082.59 ±21.31 / 1112.23 ms │ 1243.37 / 1317.50 ±49.43 / 1392.49 ms │ 1.22x slower │
│ QQuery 33 │ 1446.60 / 1470.59 ±15.25 / 1493.75 ms │ 1555.46 / 1586.40 ±23.04 / 1621.60 ms │ 1.08x slower │
│ QQuery 34 │ 1442.35 / 1464.48 ±13.31 / 1476.17 ms │ 1490.43 / 1507.68 ±13.67 / 1528.58 ms │    no change │
│ QQuery 35 │     387.45 / 388.54 ±1.22 / 390.79 ms │     390.11 / 397.32 ±5.65 / 405.08 ms │    no change │
│ QQuery 36 │     115.26 / 122.02 ±3.55 / 125.10 ms │     114.98 / 124.11 ±4.81 / 128.38 ms │    no change │
│ QQuery 37 │        47.73 / 50.56 ±1.72 / 52.72 ms │        48.64 / 51.19 ±1.44 / 52.52 ms │    no change │
│ QQuery 38 │        76.93 / 79.38 ±1.73 / 82.07 ms │        76.23 / 78.28 ±1.67 / 80.62 ms │    no change │
│ QQuery 39 │     216.17 / 226.72 ±9.78 / 239.61 ms │     218.73 / 225.40 ±4.78 / 231.98 ms │    no change │
│ QQuery 40 │        22.64 / 26.31 ±2.22 / 28.57 ms │        24.28 / 26.58 ±1.98 / 28.95 ms │    no change │
│ QQuery 41 │        21.34 / 22.43 ±1.42 / 25.16 ms │        20.56 / 21.79 ±1.01 / 23.51 ms │    no change │
│ QQuery 42 │        20.01 / 20.72 ±0.39 / 21.10 ms │        20.49 / 21.00 ±0.44 / 21.68 ms │    no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 27117.05ms │
│ Total Time (groupjoin)   │ 27635.35ms │
│ Average Time (HEAD)      │   630.63ms │
│ Average Time (groupjoin) │   642.68ms │
│ Queries Faster           │          0 │
│ Queries Slower           │          4 │
│ Queries with No Change   │         39 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 136.7s
Peak memory 39.6 GiB
Avg memory 30.0 GiB
CPU user 1285.7s
CPU sys 87.8s
Disk read 0 B
Disk write 3.9 GiB

clickbench_partitioned — branch

Metric Value
Wall time 139.3s
Peak memory 38.6 GiB
Avg memory 29.9 GiB
CPU user 1286.6s
CPU sys 109.3s
Disk read 0 B
Disk write 764.0 KiB

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

Labels

optimizer Optimizer rules physical-plan Changes to the physical-plan crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants