Skip to content

Agg bench#20761

Draft
Dandandan wants to merge 7 commits intoapache:mainfrom
Dandandan:emit_aggregation
Draft

Agg bench#20761
Dandandan wants to merge 7 commits intoapache:mainfrom
Dandandan:emit_aggregation

Conversation

@Dandandan
Copy link
Contributor

@Dandandan Dandandan commented Mar 6, 2026

Which issue does this PR close?

  • Closes #.

Rationale for this change

Trying morsel-paper-like aggregations (not really yet)

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

@Dandandan
Copy link
Contributor Author

run benchmarks

@github-actions github-actions bot added the physical-plan Changes to the physical-plan crate label Mar 6, 2026
@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing emit_aggregation (40463ea) to d025869 diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and emit_aggregation
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query    ┃        HEAD ┃ emit_aggregation ┃       Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0 │  2499.50 ms │       2470.55 ms │    no change │
│ QQuery 1 │   894.64 ms │        947.64 ms │ 1.06x slower │
│ QQuery 2 │  1841.54 ms │       1891.27 ms │    no change │
│ QQuery 3 │  1123.94 ms │       1129.20 ms │    no change │
│ QQuery 4 │  2416.71 ms │       3180.67 ms │ 1.32x slower │
│ QQuery 5 │ 26998.73 ms │      28069.69 ms │    no change │
│ QQuery 6 │  3966.93 ms │       4253.29 ms │ 1.07x slower │
│ QQuery 7 │  2840.86 ms │       4163.18 ms │ 1.47x slower │
└──────────┴─────────────┴──────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 42582.84ms │
│ Total Time (emit_aggregation)   │ 46105.50ms │
│ Average Time (HEAD)             │  5322.86ms │
│ Average Time (emit_aggregation) │  5763.19ms │
│ Queries Faster                  │          0 │
│ Queries Slower                  │          4 │
│ Queries with No Change          │          4 │
│ Queries with Failure            │          0 │
└─────────────────────────────────┴────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     2.56 ms │          2.59 ms │     no change │
│ QQuery 1  │    50.87 ms │         50.22 ms │     no change │
│ QQuery 2  │   166.70 ms │        165.06 ms │     no change │
│ QQuery 3  │   172.20 ms │        175.42 ms │     no change │
│ QQuery 4  │  1059.63 ms │       1057.57 ms │     no change │
│ QQuery 5  │  1299.82 ms │       1447.44 ms │  1.11x slower │
│ QQuery 6  │     6.79 ms │          6.58 ms │     no change │
│ QQuery 7  │    55.93 ms │         57.30 ms │     no change │
│ QQuery 8  │  1519.99 ms │       1547.00 ms │     no change │
│ QQuery 9  │  1958.43 ms │       1617.90 ms │ +1.21x faster │
│ QQuery 10 │   343.11 ms │        366.85 ms │  1.07x slower │
│ QQuery 11 │   387.29 ms │        417.07 ms │  1.08x slower │
│ QQuery 12 │  1209.45 ms │       1380.69 ms │  1.14x slower │
│ QQuery 13 │  1950.36 ms │       2374.22 ms │  1.22x slower │
│ QQuery 14 │  1244.64 ms │       1349.61 ms │  1.08x slower │
│ QQuery 15 │  1255.78 ms │       1211.67 ms │     no change │
│ QQuery 16 │  2612.56 ms │       2553.54 ms │     no change │
│ QQuery 17 │  2577.02 ms │       2554.60 ms │     no change │
│ QQuery 18 │  5966.33 ms │       4788.67 ms │ +1.25x faster │
│ QQuery 19 │   127.24 ms │        136.02 ms │  1.07x slower │
│ QQuery 20 │  1869.25 ms │       1974.33 ms │  1.06x slower │
│ QQuery 21 │  2147.48 ms │       2275.35 ms │  1.06x slower │
│ QQuery 22 │  3837.04 ms │       3935.72 ms │     no change │
│ QQuery 23 │ 19571.86 ms │      11785.90 ms │ +1.66x faster │
│ QQuery 24 │   195.41 ms │        201.40 ms │     no change │
│ QQuery 25 │   432.76 ms │        457.24 ms │  1.06x slower │
│ QQuery 26 │   198.78 ms │        198.17 ms │     no change │
│ QQuery 27 │  2739.23 ms │       2766.00 ms │     no change │
│ QQuery 28 │ 21905.89 ms │      23949.92 ms │  1.09x slower │
│ QQuery 29 │  1025.81 ms │       1062.56 ms │     no change │
│ QQuery 30 │  1215.25 ms │       1335.38 ms │  1.10x slower │
│ QQuery 31 │  1376.27 ms │       1611.61 ms │  1.17x slower │
│ QQuery 32 │  4462.74 ms │       6227.06 ms │  1.40x slower │
│ QQuery 33 │  5481.40 ms │       6197.44 ms │  1.13x slower │
│ QQuery 34 │  6493.63 ms │       6394.94 ms │     no change │
│ QQuery 35 │  1939.21 ms │       1968.84 ms │     no change │
│ QQuery 36 │   180.22 ms │        186.61 ms │     no change │
│ QQuery 37 │    73.77 ms │         71.08 ms │     no change │
│ QQuery 38 │   113.08 ms │        113.18 ms │     no change │
│ QQuery 39 │   330.67 ms │        364.40 ms │  1.10x slower │
│ QQuery 40 │    37.74 ms │         45.16 ms │  1.20x slower │
│ QQuery 41 │    33.44 ms │         35.31 ms │  1.06x slower │
│ QQuery 42 │    30.95 ms │         31.53 ms │     no change │
└───────────┴─────────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 99658.56ms │
│ Total Time (emit_aggregation)   │ 96449.14ms │
│ Average Time (HEAD)             │  2317.64ms │
│ Average Time (emit_aggregation) │  2243.00ms │
│ Queries Faster                  │          3 │
│ Queries Slower                  │         18 │
│ Queries with No Change          │         22 │
│ Queries with Failure            │          0 │
└─────────────────────────────────┴────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 128.99 ms │        129.51 ms │     no change │
│ QQuery 2  │  31.61 ms │         32.09 ms │     no change │
│ QQuery 3  │  36.81 ms │         40.71 ms │  1.11x slower │
│ QQuery 4  │  35.42 ms │         34.57 ms │     no change │
│ QQuery 5  │  90.44 ms │         91.01 ms │     no change │
│ QQuery 6  │  24.54 ms │         27.66 ms │  1.13x slower │
│ QQuery 7  │ 162.87 ms │        154.66 ms │ +1.05x faster │
│ QQuery 8  │  41.83 ms │         39.84 ms │     no change │
│ QQuery 9  │ 107.66 ms │        105.73 ms │     no change │
│ QQuery 10 │  73.62 ms │         73.13 ms │     no change │
│ QQuery 11 │  19.19 ms │         18.66 ms │     no change │
│ QQuery 12 │  66.69 ms │         67.83 ms │     no change │
│ QQuery 13 │  53.04 ms │         55.33 ms │     no change │
│ QQuery 14 │  15.78 ms │         15.93 ms │     no change │
│ QQuery 15 │  32.99 ms │         34.04 ms │     no change │
│ QQuery 16 │  31.37 ms │         30.32 ms │     no change │
│ QQuery 17 │ 166.68 ms │        195.32 ms │  1.17x slower │
│ QQuery 18 │ 307.22 ms │        297.66 ms │     no change │
│ QQuery 19 │  52.84 ms │         51.92 ms │     no change │
│ QQuery 20 │  62.38 ms │         64.57 ms │     no change │
│ QQuery 21 │ 203.50 ms │        197.80 ms │     no change │
│ QQuery 22 │  25.17 ms │         24.59 ms │     no change │
└───────────┴───────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 1770.65ms │
│ Total Time (emit_aggregation)   │ 1782.88ms │
│ Average Time (HEAD)             │   80.48ms │
│ Average Time (emit_aggregation) │   81.04ms │
│ Queries Faster                  │         1 │
│ Queries Slower                  │         3 │
│ Queries with No Change          │        18 │
│ Queries with Failure            │         0 │
└─────────────────────────────────┴───────────┘

@Dandandan
Copy link
Contributor Author

Hmm looks a bit mixed (different than on my machine). But I think the DuckDB approach might give more improvements.

@Dandandan Dandandan closed this Mar 6, 2026
@Dandandan
Copy link
Contributor Author

run benchmarks

@Dandandan Dandandan reopened this Mar 6, 2026
@Dandandan Dandandan changed the title Test early emitting Test aggregations Mar 6, 2026
@Dandandan Dandandan changed the title Test aggregations Agg bench Mar 6, 2026
Introduce PartitionAggState to support multiple internal hash tables
in partial aggregation. When enabled via AggregateExec::with_num_agg_partitions(),
input rows are hashed by group keys (using the same hash as RepartitionExec)
and routed to separate smaller hash tables for better cache locality.

Defaults to 1 partition (no behavior change). The optimizer can set
higher values when a hash repartition follows the partial aggregate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing emit_aggregation (b793a93) to d025869 diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

…tial aggregation

When num_agg_partitions > 1, the partial aggregate now acts as a
repartitioning operator, producing T output partitions directly via
channels. Each input task runs a GroupedHashAggregateStream with T
internal hash tables, then routes emitted batches to the correct
output channel using last_emitted_partition (no re-hashing needed
since internal tables use the same REPARTITION_RANDOM_STATE hash).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and emit_aggregation
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query    ┃        HEAD ┃ emit_aggregation ┃    Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 0 │  2440.48 ms │       2459.58 ms │ no change │
│ QQuery 1 │   891.01 ms │        899.48 ms │ no change │
│ QQuery 2 │  1834.30 ms │       1745.94 ms │ no change │
│ QQuery 3 │  1133.07 ms │       1099.29 ms │ no change │
│ QQuery 4 │  2421.85 ms │       2443.52 ms │ no change │
│ QQuery 5 │ 27133.12 ms │      27319.98 ms │ no change │
│ QQuery 6 │  3940.38 ms │       4116.71 ms │ no change │
│ QQuery 7 │  3056.37 ms │       2981.92 ms │ no change │
└──────────┴─────────────┴──────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 42850.58ms │
│ Total Time (emit_aggregation)   │ 43066.43ms │
│ Average Time (HEAD)             │  5356.32ms │
│ Average Time (emit_aggregation) │  5383.30ms │
│ Queries Faster                  │          0 │
│ Queries Slower                  │          0 │
│ Queries with No Change          │          8 │
│ Queries with Failure            │          0 │
└─────────────────────────────────┴────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     2.57 ms │          2.61 ms │     no change │
│ QQuery 1  │    51.67 ms │         51.69 ms │     no change │
│ QQuery 2  │   164.74 ms │        166.00 ms │     no change │
│ QQuery 3  │   171.47 ms │        174.36 ms │     no change │
│ QQuery 4  │  1123.14 ms │       1191.12 ms │  1.06x slower │
│ QQuery 5  │  1305.32 ms │       1396.23 ms │  1.07x slower │
│ QQuery 6  │     6.42 ms │          6.91 ms │  1.08x slower │
│ QQuery 7  │    56.15 ms │         56.72 ms │     no change │
│ QQuery 8  │  1542.79 ms │       1580.15 ms │     no change │
│ QQuery 9  │  1909.74 ms │       1991.22 ms │     no change │
│ QQuery 10 │   337.50 ms │        353.80 ms │     no change │
│ QQuery 11 │   388.74 ms │        401.65 ms │     no change │
│ QQuery 12 │  1215.68 ms │       1301.20 ms │  1.07x slower │
│ QQuery 13 │  2023.27 ms │       2097.86 ms │     no change │
│ QQuery 14 │  1259.58 ms │       1318.93 ms │     no change │
│ QQuery 15 │  1312.30 ms │       1320.23 ms │     no change │
│ QQuery 16 │  2690.43 ms │       2719.49 ms │     no change │
│ QQuery 17 │  2612.64 ms │       2712.60 ms │     no change │
│ QQuery 18 │  5831.12 ms │       5194.65 ms │ +1.12x faster │
│ QQuery 19 │   127.09 ms │        129.42 ms │     no change │
│ QQuery 20 │  1902.32 ms │       1950.30 ms │     no change │
│ QQuery 21 │  2140.98 ms │       2237.94 ms │     no change │
│ QQuery 22 │  3737.72 ms │       3927.23 ms │  1.05x slower │
│ QQuery 23 │ 28406.92 ms │      11802.77 ms │ +2.41x faster │
│ QQuery 24 │   198.50 ms │        218.08 ms │  1.10x slower │
│ QQuery 25 │   434.79 ms │        447.79 ms │     no change │
│ QQuery 26 │   191.42 ms │        198.25 ms │     no change │
│ QQuery 27 │  2634.56 ms │       2780.21 ms │  1.06x slower │
│ QQuery 28 │ 22039.37 ms │      25077.70 ms │  1.14x slower │
│ QQuery 29 │  1048.08 ms │       1050.17 ms │     no change │
│ QQuery 30 │  1295.74 ms │       1286.61 ms │     no change │
│ QQuery 31 │  1468.83 ms │       1390.48 ms │ +1.06x faster │
│ QQuery 32 │  5013.84 ms │       4680.44 ms │ +1.07x faster │
│ QQuery 33 │  5576.51 ms │       5856.25 ms │  1.05x slower │
│ QQuery 34 │  5858.81 ms │       6206.05 ms │  1.06x slower │
│ QQuery 35 │  2050.11 ms │       2077.04 ms │     no change │
│ QQuery 36 │   185.21 ms │        192.74 ms │     no change │
│ QQuery 37 │    71.84 ms │         74.55 ms │     no change │
│ QQuery 38 │   108.07 ms │        112.21 ms │     no change │
│ QQuery 39 │   324.00 ms │        348.12 ms │  1.07x slower │
│ QQuery 40 │    38.95 ms │         39.10 ms │     no change │
│ QQuery 41 │    36.03 ms │         39.15 ms │  1.09x slower │
│ QQuery 42 │    30.38 ms │         31.48 ms │     no change │
└───────────┴─────────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 108925.32ms │
│ Total Time (emit_aggregation)   │  96191.54ms │
│ Average Time (HEAD)             │   2533.15ms │
│ Average Time (emit_aggregation) │   2237.01ms │
│ Queries Faster                  │           4 │
│ Queries Slower                  │          12 │
│ Queries with No Change          │          27 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 128.37 ms │        129.31 ms │     no change │
│ QQuery 2  │  31.98 ms │         33.04 ms │     no change │
│ QQuery 3  │  38.73 ms │         41.52 ms │  1.07x slower │
│ QQuery 4  │  34.72 ms │         34.78 ms │     no change │
│ QQuery 5  │  90.42 ms │         95.64 ms │  1.06x slower │
│ QQuery 6  │  24.76 ms │         24.79 ms │     no change │
│ QQuery 7  │ 154.11 ms │        165.02 ms │  1.07x slower │
│ QQuery 8  │  45.70 ms │         40.57 ms │ +1.13x faster │
│ QQuery 9  │ 119.16 ms │        110.38 ms │ +1.08x faster │
│ QQuery 10 │  80.84 ms │         71.38 ms │ +1.13x faster │
│ QQuery 11 │  18.88 ms │         18.93 ms │     no change │
│ QQuery 12 │  63.92 ms │         66.10 ms │     no change │
│ QQuery 13 │  53.09 ms │         53.39 ms │     no change │
│ QQuery 14 │  16.68 ms │         15.63 ms │ +1.07x faster │
│ QQuery 15 │  33.52 ms │         32.99 ms │     no change │
│ QQuery 16 │  30.09 ms │         30.51 ms │     no change │
│ QQuery 17 │ 174.36 ms │        171.00 ms │     no change │
│ QQuery 18 │ 292.07 ms │        300.11 ms │     no change │
│ QQuery 19 │  53.86 ms │         54.42 ms │     no change │
│ QQuery 20 │  63.36 ms │         63.29 ms │     no change │
│ QQuery 21 │ 201.63 ms │        204.42 ms │     no change │
│ QQuery 22 │  25.47 ms │         24.48 ms │     no change │
└───────────┴───────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 1775.71ms │
│ Total Time (emit_aggregation)   │ 1781.71ms │
│ Average Time (HEAD)             │   80.71ms │
│ Average Time (emit_aggregation) │   80.99ms │
│ Queries Faster                  │         4 │
│ Queries Slower                  │         3 │
│ Queries with No Change          │        15 │
│ Queries with Failure            │         0 │
└─────────────────────────────────┴───────────┘

@github-actions github-actions bot added optimizer Optimizer rules core Core DataFusion crate labels Mar 6, 2026
@Dandandan
Copy link
Contributor Author

run benchmarks

- Fix ProducingOutput to carry partition index alongside batch, ensuring
  correct routing when emit_next_partition eagerly advances the index
- Add use_channels() method to centralize the decision of when to use
  the channel-based multi-output path
- Add update_cache_partitioning() to keep output partitioning in sync
  when limit_options or num_agg_partitions change
- Fix with_new_limit_options to recalculate output partitioning (prevents
  TopK aggregation from claiming Hash partitioning when channels won't
  be used)
- Guard CombinePartialFinalAggregate from combining when Partial has
  num_agg_partitions > 1
- Set num_agg_partitions in physical planner when repartitioning is enabled
- Keep spawned task references alive via Arc in output streams to prevent
  abort-on-drop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing emit_aggregation (f76efe6) to 02ce571 diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and emit_aggregation
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query    ┃        HEAD ┃ emit_aggregation ┃       Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0 │  2492.44 ms │       2412.17 ms │    no change │
│ QQuery 1 │   868.07 ms │        978.50 ms │ 1.13x slower │
│ QQuery 2 │  1728.10 ms │       2568.87 ms │ 1.49x slower │
│ QQuery 3 │  1128.56 ms │       1643.68 ms │ 1.46x slower │
│ QQuery 4 │  2402.03 ms │       7815.27 ms │ 3.25x slower │
│ QQuery 5 │ 27648.92 ms │     248181.67 ms │ 8.98x slower │
│ QQuery 6 │  3966.12 ms │       4263.17 ms │ 1.07x slower │
│ QQuery 7 │  3020.18 ms │      19349.35 ms │ 6.41x slower │
└──────────┴─────────────┴──────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │  43254.43ms │
│ Total Time (emit_aggregation)   │ 287212.69ms │
│ Average Time (HEAD)             │   5406.80ms │
│ Average Time (emit_aggregation) │  35901.59ms │
│ Queries Faster                  │           0 │
│ Queries Slower                  │           7 │
│ Queries with No Change          │           1 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     2.60 ms │          2.59 ms │     no change │
│ QQuery 1  │    51.86 ms │         52.37 ms │     no change │
│ QQuery 2  │   168.26 ms │        165.32 ms │     no change │
│ QQuery 3  │   166.90 ms │        175.62 ms │  1.05x slower │
│ QQuery 4  │  1129.45 ms │       1499.56 ms │  1.33x slower │
│ QQuery 5  │  1333.16 ms │       1703.62 ms │  1.28x slower │
│ QQuery 6  │     6.69 ms │          7.17 ms │  1.07x slower │
│ QQuery 7  │    55.33 ms │         59.50 ms │  1.08x slower │
│ QQuery 8  │  1518.88 ms │       2114.26 ms │  1.39x slower │
│ QQuery 9  │  1878.36 ms │       2323.07 ms │  1.24x slower │
│ QQuery 10 │   340.45 ms │        392.53 ms │  1.15x slower │
│ QQuery 11 │   399.70 ms │        451.50 ms │  1.13x slower │
│ QQuery 12 │  1222.48 ms │       1458.46 ms │  1.19x slower │
│ QQuery 13 │  2040.01 ms │       4518.06 ms │  2.21x slower │
│ QQuery 14 │  1233.76 ms │       1451.43 ms │  1.18x slower │
│ QQuery 15 │  1300.48 ms │       1740.70 ms │  1.34x slower │
│ QQuery 16 │  2622.57 ms │       3282.89 ms │  1.25x slower │
│ QQuery 17 │  2578.32 ms │       3154.57 ms │  1.22x slower │
│ QQuery 18 │  5916.43 ms │       5924.96 ms │     no change │
│ QQuery 19 │   127.60 ms │        131.71 ms │     no change │
│ QQuery 20 │  1896.26 ms │       1973.74 ms │     no change │
│ QQuery 21 │  2182.31 ms │       2225.55 ms │     no change │
│ QQuery 22 │  3851.69 ms │       3939.70 ms │     no change │
│ QQuery 23 │ 29897.66 ms │      12280.16 ms │ +2.43x faster │
│ QQuery 24 │   198.53 ms │        208.68 ms │  1.05x slower │
│ QQuery 25 │   452.75 ms │        455.83 ms │     no change │
│ QQuery 26 │   196.49 ms │        203.71 ms │     no change │
│ QQuery 27 │  2697.64 ms │       3120.52 ms │  1.16x slower │
│ QQuery 28 │ 24567.96 ms │      24389.24 ms │     no change │
│ QQuery 29 │  1050.83 ms │       1096.42 ms │     no change │
│ QQuery 30 │  1283.41 ms │       1397.11 ms │  1.09x slower │
│ QQuery 31 │  1405.27 ms │       2474.23 ms │  1.76x slower │
│ QQuery 32 │  5202.11 ms │      20593.28 ms │  3.96x slower │
│ QQuery 33 │  6342.26 ms │       6498.98 ms │     no change │
│ QQuery 34 │  6742.91 ms │       6575.12 ms │     no change │
│ QQuery 35 │  1273.77 ms │       1624.11 ms │  1.28x slower │
│ QQuery 36 │   192.71 ms │        222.67 ms │  1.16x slower │
│ QQuery 37 │    72.75 ms │         84.32 ms │  1.16x slower │
│ QQuery 38 │   113.15 ms │        118.60 ms │     no change │
│ QQuery 39 │   354.61 ms │        425.43 ms │  1.20x slower │
│ QQuery 40 │    40.02 ms │         41.85 ms │     no change │
│ QQuery 41 │    34.45 ms │         34.98 ms │     no change │
│ QQuery 42 │    33.54 ms │         39.18 ms │  1.17x slower │
└───────────┴─────────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 114176.41ms │
│ Total Time (emit_aggregation)   │ 120633.30ms │
│ Average Time (HEAD)             │   2655.27ms │
│ Average Time (emit_aggregation) │   2805.43ms │
│ Queries Faster                  │           1 │
│ Queries Slower                  │          25 │
│ Queries with No Change          │          17 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 133.42 ms │        177.86 ms │  1.33x slower │
│ QQuery 2  │  32.69 ms │         30.96 ms │ +1.06x faster │
│ QQuery 3  │  40.07 ms │         37.33 ms │ +1.07x faster │
│ QQuery 4  │  35.83 ms │         35.61 ms │     no change │
│ QQuery 5  │  90.62 ms │         93.15 ms │     no change │
│ QQuery 6  │  24.85 ms │         25.29 ms │     no change │
│ QQuery 7  │ 161.42 ms │        152.93 ms │ +1.06x faster │
│ QQuery 8  │  41.06 ms │         40.35 ms │     no change │
│ QQuery 9  │ 114.86 ms │        112.77 ms │     no change │
│ QQuery 10 │  73.00 ms │         71.33 ms │     no change │
│ QQuery 11 │  18.95 ms │         17.43 ms │ +1.09x faster │
│ QQuery 12 │  59.23 ms │         68.48 ms │  1.16x slower │
│ QQuery 13 │  55.09 ms │         57.64 ms │     no change │
│ QQuery 14 │  15.58 ms │         15.91 ms │     no change │
│ QQuery 15 │  33.74 ms │         33.14 ms │     no change │
│ QQuery 16 │  30.97 ms │         29.97 ms │     no change │
│ QQuery 17 │ 172.11 ms │        177.33 ms │     no change │
│ QQuery 18 │ 301.82 ms │        318.37 ms │  1.05x slower │
│ QQuery 19 │  63.61 ms │         51.78 ms │ +1.23x faster │
│ QQuery 20 │  76.33 ms │         62.64 ms │ +1.22x faster │
│ QQuery 21 │ 205.63 ms │        197.74 ms │     no change │
│ QQuery 22 │  24.47 ms │         26.21 ms │  1.07x slower │
└───────────┴───────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 1805.34ms │
│ Total Time (emit_aggregation)   │ 1834.24ms │
│ Average Time (HEAD)             │   82.06ms │
│ Average Time (emit_aggregation) │   83.37ms │
│ Queries Faster                  │         6 │
│ Queries Slower                  │         4 │
│ Queries with No Change          │        12 │
│ Queries with Failure            │         0 │
└─────────────────────────────────┴───────────┘

@Dandandan Dandandan closed this Mar 7, 2026
@Dandandan Dandandan reopened this Mar 7, 2026
@github-actions github-actions bot added the logical-expr Logical plan and expressions label Mar 7, 2026
@Dandandan
Copy link
Contributor Author

run benchmarks

…n partitioned aggregation

Replace take_arrays calls in the multi-partition aggregation path with
index-based methods that pass row indices directly to GroupValues and
GroupsAccumulator implementations.

- Add intern_with_indices to GroupValues trait with precomputed hashes (default uses take)
- Add update_batch_with_indices/merge_batch_with_indices to GroupsAccumulator (default uses take)
- Native intern_with_indices for GroupValuesRows, GroupValuesPrimitive, GroupValuesBoolean
- Primitive reuses precomputed hashes; row converter reuses precomputed hashes
- Compute aggregation hashes once in row_hash.rs and pass to all partitions
- Extract shared take_values_and_filter helper, intern_value helpers to reduce duplication
- Merge accumulate_partition and accumulate_partition_with_indices into single method

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing emit_aggregation (155db34) to 02ce571 diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and emit_aggregation
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query    ┃        HEAD ┃ emit_aggregation ┃       Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0 │  2396.74 ms │       2445.97 ms │    no change │
│ QQuery 1 │   875.71 ms │        913.93 ms │    no change │
│ QQuery 2 │  1730.60 ms │       2299.77 ms │ 1.33x slower │
│ QQuery 3 │  1125.30 ms │       1678.45 ms │ 1.49x slower │
│ QQuery 4 │  2373.24 ms │       7716.19 ms │ 3.25x slower │
│ QQuery 5 │ 27788.29 ms │     249538.67 ms │ 8.98x slower │
│ QQuery 6 │  3987.58 ms │       4025.35 ms │    no change │
│ QQuery 7 │  3030.95 ms │      19996.79 ms │ 6.60x slower │
└──────────┴─────────────┴──────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │  43308.42ms │
│ Total Time (emit_aggregation)   │ 288615.13ms │
│ Average Time (HEAD)             │   5413.55ms │
│ Average Time (emit_aggregation) │  36076.89ms │
│ Queries Faster                  │           0 │
│ Queries Slower                  │           5 │
│ Queries with No Change          │           3 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     2.57 ms │          2.62 ms │     no change │
│ QQuery 1  │    51.80 ms │         51.02 ms │     no change │
│ QQuery 2  │   169.53 ms │        165.23 ms │     no change │
│ QQuery 3  │   165.95 ms │        169.07 ms │     no change │
│ QQuery 4  │  1103.19 ms │       1484.66 ms │  1.35x slower │
│ QQuery 5  │  1294.99 ms │       1659.34 ms │  1.28x slower │
│ QQuery 6  │     7.55 ms │          7.57 ms │     no change │
│ QQuery 7  │    56.31 ms │         59.91 ms │  1.06x slower │
│ QQuery 8  │  1495.51 ms │       2122.98 ms │  1.42x slower │
│ QQuery 9  │  1894.22 ms │       2357.26 ms │  1.24x slower │
│ QQuery 10 │   330.79 ms │        374.44 ms │  1.13x slower │
│ QQuery 11 │   383.05 ms │        426.15 ms │  1.11x slower │
│ QQuery 12 │  1176.38 ms │       1462.26 ms │  1.24x slower │
│ QQuery 13 │  2028.86 ms │       4351.88 ms │  2.14x slower │
│ QQuery 14 │  1221.98 ms │       1473.32 ms │  1.21x slower │
│ QQuery 15 │  1245.81 ms │       1703.11 ms │  1.37x slower │
│ QQuery 16 │  2616.84 ms │       3193.17 ms │  1.22x slower │
│ QQuery 17 │  2602.32 ms │       3202.14 ms │  1.23x slower │
│ QQuery 18 │  5932.44 ms │       5837.86 ms │     no change │
│ QQuery 19 │   131.85 ms │        132.96 ms │     no change │
│ QQuery 20 │  1864.22 ms │       1873.57 ms │     no change │
│ QQuery 21 │  2120.37 ms │       2118.38 ms │     no change │
│ QQuery 22 │  3860.39 ms │       3699.53 ms │     no change │
│ QQuery 23 │ 28506.62 ms │      11785.78 ms │ +2.42x faster │
│ QQuery 24 │   193.44 ms │        198.62 ms │     no change │
│ QQuery 25 │   458.45 ms │        440.43 ms │     no change │
│ QQuery 26 │   216.84 ms │        210.93 ms │     no change │
│ QQuery 27 │  2769.36 ms │       3025.51 ms │  1.09x slower │
│ QQuery 28 │ 24765.52 ms │      24799.82 ms │     no change │
│ QQuery 29 │  1050.96 ms │       1084.53 ms │     no change │
│ QQuery 30 │  1301.08 ms │       1420.32 ms │  1.09x slower │
│ QQuery 31 │  1376.67 ms │       2286.81 ms │  1.66x slower │
│ QQuery 32 │  5068.50 ms │      24634.09 ms │  4.86x slower │
│ QQuery 33 │  6239.65 ms │       6471.82 ms │     no change │
│ QQuery 34 │  6556.22 ms │       6365.89 ms │     no change │
│ QQuery 35 │  1224.18 ms │       1666.91 ms │  1.36x slower │
│ QQuery 36 │   185.31 ms │        203.18 ms │  1.10x slower │
│ QQuery 37 │    73.70 ms │         80.86 ms │  1.10x slower │
│ QQuery 38 │   109.09 ms │        113.75 ms │     no change │
│ QQuery 39 │   337.88 ms │        409.75 ms │  1.21x slower │
│ QQuery 40 │    37.90 ms │         40.93 ms │  1.08x slower │
│ QQuery 41 │    36.87 ms │         35.15 ms │     no change │
│ QQuery 42 │    30.18 ms │         40.46 ms │  1.34x slower │
└───────────┴─────────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 112295.34ms │
│ Total Time (emit_aggregation)   │ 123243.95ms │
│ Average Time (HEAD)             │   2611.52ms │
│ Average Time (emit_aggregation) │   2866.14ms │
│ Queries Faster                  │           1 │
│ Queries Slower                  │          23 │
│ Queries with No Change          │          19 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 136.90 ms │        170.47 ms │  1.25x slower │
│ QQuery 2  │  32.69 ms │         30.65 ms │ +1.07x faster │
│ QQuery 3  │  39.71 ms │         38.89 ms │     no change │
│ QQuery 4  │  35.96 ms │         35.06 ms │     no change │
│ QQuery 5  │  87.97 ms │         89.45 ms │     no change │
│ QQuery 6  │  25.59 ms │         20.31 ms │ +1.26x faster │
│ QQuery 7  │ 157.19 ms │        149.23 ms │ +1.05x faster │
│ QQuery 8  │  41.01 ms │         39.51 ms │     no change │
│ QQuery 9  │ 109.85 ms │        108.66 ms │     no change │
│ QQuery 10 │  70.18 ms │         70.26 ms │     no change │
│ QQuery 11 │  19.29 ms │         17.65 ms │ +1.09x faster │
│ QQuery 12 │  71.46 ms │         69.28 ms │     no change │
│ QQuery 13 │  53.53 ms │         56.97 ms │  1.06x slower │
│ QQuery 14 │  16.79 ms │         16.40 ms │     no change │
│ QQuery 15 │  33.85 ms │         34.44 ms │     no change │
│ QQuery 16 │  30.67 ms │         30.77 ms │     no change │
│ QQuery 17 │ 156.55 ms │        181.19 ms │  1.16x slower │
│ QQuery 18 │ 295.92 ms │        334.24 ms │  1.13x slower │
│ QQuery 19 │  48.77 ms │         48.02 ms │     no change │
│ QQuery 20 │  61.86 ms │         58.44 ms │ +1.06x faster │
│ QQuery 21 │ 201.54 ms │        192.03 ms │     no change │
│ QQuery 22 │  24.67 ms │         22.21 ms │ +1.11x faster │
└───────────┴───────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 1751.96ms │
│ Total Time (emit_aggregation)   │ 1814.13ms │
│ Average Time (HEAD)             │   79.63ms │
│ Average Time (emit_aggregation) │   82.46ms │
│ Queries Faster                  │         6 │
│ Queries Slower                  │         4 │
│ Queries with No Change          │        12 │
│ Queries with Failure            │         0 │
└─────────────────────────────────┴───────────┘

@github-actions github-actions bot added the functions Changes to functions implementation label Mar 8, 2026
@Dandandan
Copy link
Contributor Author

run benchmarks

@alamb-ghbot
Copy link

🤖 ./gh_compare_branch.sh gh_compare_branch.sh Running
Linux aal-dev 6.14.0-1018-gcp #19~24.04.1-Ubuntu SMP Wed Sep 24 23:23:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing emit_aggregation (d2733aa) to 02ce571 diff using: tpch_mem clickbench_partitioned clickbench_extended
Results will be posted here when complete

@alamb-ghbot
Copy link

🤖: Benchmark completed

Details

Comparing HEAD and emit_aggregation
--------------------
Benchmark clickbench_extended.json
--------------------
┏━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query    ┃        HEAD ┃ emit_aggregation ┃       Change ┃
┡━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0 │  2389.20 ms │       2375.08 ms │    no change │
│ QQuery 1 │   853.53 ms │        957.57 ms │ 1.12x slower │
│ QQuery 2 │  1793.70 ms │       2337.03 ms │ 1.30x slower │
│ QQuery 3 │  1131.78 ms │       1604.06 ms │ 1.42x slower │
│ QQuery 4 │  2375.20 ms │       6850.27 ms │ 2.88x slower │
│ QQuery 5 │ 28764.15 ms │     245390.79 ms │ 8.53x slower │
│ QQuery 6 │  3970.59 ms │       4001.78 ms │    no change │
│ QQuery 7 │  2841.20 ms │      17974.35 ms │ 6.33x slower │
└──────────┴─────────────┴──────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │  44119.35ms │
│ Total Time (emit_aggregation)   │ 281490.93ms │
│ Average Time (HEAD)             │   5514.92ms │
│ Average Time (emit_aggregation) │  35186.37ms │
│ Queries Faster                  │           0 │
│ Queries Slower                  │           6 │
│ Queries with No Change          │           2 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     2.57 ms │          2.60 ms │     no change │
│ QQuery 1  │    49.40 ms │         49.70 ms │     no change │
│ QQuery 2  │   163.70 ms │        167.18 ms │     no change │
│ QQuery 3  │   168.00 ms │        174.01 ms │     no change │
│ QQuery 4  │  1059.22 ms │       1390.26 ms │  1.31x slower │
│ QQuery 5  │  1262.31 ms │       1600.20 ms │  1.27x slower │
│ QQuery 6  │     6.41 ms │          7.05 ms │  1.10x slower │
│ QQuery 7  │    54.80 ms │         56.84 ms │     no change │
│ QQuery 8  │  1497.51 ms │       2056.33 ms │  1.37x slower │
│ QQuery 9  │  1814.71 ms │       2173.41 ms │  1.20x slower │
│ QQuery 10 │   342.82 ms │        379.43 ms │  1.11x slower │
│ QQuery 11 │   386.20 ms │        430.52 ms │  1.11x slower │
│ QQuery 12 │  1199.56 ms │       1390.71 ms │  1.16x slower │
│ QQuery 13 │  1956.85 ms │       4121.77 ms │  2.11x slower │
│ QQuery 14 │  1217.24 ms │       1417.95 ms │  1.16x slower │
│ QQuery 15 │  1250.93 ms │       1646.25 ms │  1.32x slower │
│ QQuery 16 │  2565.88 ms │       2983.88 ms │  1.16x slower │
│ QQuery 17 │  2552.82 ms │       2979.04 ms │  1.17x slower │
│ QQuery 18 │  5991.52 ms │       5555.86 ms │ +1.08x faster │
│ QQuery 19 │   127.83 ms │        131.26 ms │     no change │
│ QQuery 20 │  1921.55 ms │       1843.68 ms │     no change │
│ QQuery 21 │  2165.25 ms │       2068.18 ms │     no change │
│ QQuery 22 │  3714.27 ms │       3672.90 ms │     no change │
│ QQuery 23 │ 22303.58 ms │      11978.34 ms │ +1.86x faster │
│ QQuery 24 │   189.33 ms │        199.44 ms │  1.05x slower │
│ QQuery 25 │   425.67 ms │        427.53 ms │     no change │
│ QQuery 26 │   209.61 ms │        190.60 ms │ +1.10x faster │
│ QQuery 27 │  2643.19 ms │       2952.99 ms │  1.12x slower │
│ QQuery 28 │ 25600.18 ms │      25655.61 ms │     no change │
│ QQuery 29 │  1026.93 ms │       1069.20 ms │     no change │
│ QQuery 30 │  1268.64 ms │       1386.98 ms │  1.09x slower │
│ QQuery 31 │  1388.47 ms │       2269.45 ms │  1.63x slower │
│ QQuery 32 │  4881.97 ms │      24140.75 ms │  4.94x slower │
│ QQuery 33 │  5761.34 ms │       6178.70 ms │  1.07x slower │
│ QQuery 34 │  6525.25 ms │       6066.59 ms │ +1.08x faster │
│ QQuery 35 │  1218.02 ms │       1516.91 ms │  1.25x slower │
│ QQuery 36 │   179.14 ms │        205.75 ms │  1.15x slower │
│ QQuery 37 │    70.65 ms │         82.78 ms │  1.17x slower │
│ QQuery 38 │   110.48 ms │        111.40 ms │     no change │
│ QQuery 39 │   334.49 ms │        390.09 ms │  1.17x slower │
│ QQuery 40 │    40.53 ms │         37.55 ms │ +1.08x faster │
│ QQuery 41 │    34.99 ms │         33.51 ms │     no change │
│ QQuery 42 │    30.81 ms │         36.34 ms │  1.18x slower │
└───────────┴─────────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓
┃ Benchmark Summary               ┃             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 105714.62ms │
│ Total Time (emit_aggregation)   │ 121229.51ms │
│ Average Time (HEAD)             │   2458.48ms │
│ Average Time (emit_aggregation) │   2819.29ms │
│ Queries Faster                  │           5 │
│ Queries Slower                  │          24 │
│ Queries with No Change          │          14 │
│ Queries with Failure            │           0 │
└─────────────────────────────────┴─────────────┘
--------------------
Benchmark tpch_mem_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ emit_aggregation ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 127.70 ms │        165.61 ms │  1.30x slower │
│ QQuery 2  │  31.61 ms │         29.96 ms │ +1.06x faster │
│ QQuery 3  │  38.91 ms │         39.85 ms │     no change │
│ QQuery 4  │  35.57 ms │         34.59 ms │     no change │
│ QQuery 5  │  92.69 ms │         89.63 ms │     no change │
│ QQuery 6  │  24.08 ms │         24.50 ms │     no change │
│ QQuery 7  │ 153.37 ms │        144.84 ms │ +1.06x faster │
│ QQuery 8  │  40.17 ms │         36.83 ms │ +1.09x faster │
│ QQuery 9  │ 106.77 ms │        110.26 ms │     no change │
│ QQuery 10 │  69.89 ms │         71.41 ms │     no change │
│ QQuery 11 │  18.11 ms │         17.79 ms │     no change │
│ QQuery 12 │  65.92 ms │         64.06 ms │     no change │
│ QQuery 13 │  53.74 ms │         57.74 ms │  1.07x slower │
│ QQuery 14 │  15.85 ms │         16.10 ms │     no change │
│ QQuery 15 │  32.92 ms │         32.31 ms │     no change │
│ QQuery 16 │  30.75 ms │         26.26 ms │ +1.17x faster │
│ QQuery 17 │ 165.49 ms │        181.19 ms │  1.09x slower │
│ QQuery 18 │ 297.88 ms │        323.38 ms │  1.09x slower │
│ QQuery 19 │  50.95 ms │         52.13 ms │     no change │
│ QQuery 20 │  59.85 ms │         58.10 ms │     no change │
│ QQuery 21 │ 199.20 ms │        187.98 ms │ +1.06x faster │
│ QQuery 22 │  24.40 ms │         24.47 ms │     no change │
└───────────┴───────────┴──────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary               ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)               │ 1735.83ms │
│ Total Time (emit_aggregation)   │ 1789.01ms │
│ Average Time (HEAD)             │   78.90ms │
│ Average Time (emit_aggregation) │   81.32ms │
│ Queries Faster                  │         5 │
│ Queries Slower                  │         4 │
│ Queries with No Change          │        13 │
│ Queries with Failure            │         0 │
└─────────────────────────────────┴───────────┘

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

Labels

core Core DataFusion crate functions Changes to functions implementation logical-expr Logical plan and expressions optimizer Optimizer rules physical-plan Changes to the physical-plan crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants