Skip to content

Fix elapsed_compute metric for Parquet DataSourceExec#20767

Merged
alamb merged 3 commits intoapache:mainfrom
ernestprovo23:fix-parquet-elapsed-compute
Mar 24, 2026
Merged

Fix elapsed_compute metric for Parquet DataSourceExec#20767
alamb merged 3 commits intoapache:mainfrom
ernestprovo23:fix-parquet-elapsed-compute

Conversation

@ernestprovo23
Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Closes part of #18195 — specifically the elapsed_compute baseline metric sub-item for Parquet scans.

Rationale

EXPLAIN ANALYZE on Parquet scans reports elapsed_compute values like 14ns for full table scans, which is misleading. The metric was never being populated because no timer wrapped the per-batch compute work in the Parquet scan path.

What changes are included in this PR?

Follows the same pattern established in PR #18901 (CSV fix):

  1. Added BaselineMetrics instantiation in ParquetOpener::open() using the existing metrics and partition_index fields
  2. Wrapped the per-batch stream .map() closure with an elapsed_compute timer that measures projection, schema replacement, and metrics copy work

Single file changed: datafusion/datasource-parquet/src/opener.rs (+7, -3 lines)

Are these changes tested?

  • All 81 existing tests in datafusion-datasource-parquet pass
  • The metric correctness is verified by observing realistic elapsed_compute values in EXPLAIN ANALYZE output (no longer showing nanosecond-level values for real scans)
  • Per maintainer guidance from @2010YOUY01: "Testing if we have the time measured correct is tricky, I don't think there is a good way to do it. But for a large parquet file scan, several nanoseconds is definitely not reasonable."

Are there any user-facing changes?

EXPLAIN ANALYZE output for Parquet scans will now show accurate elapsed_compute values reflecting actual CPU time spent on per-batch processing.

@github-actions github-actions Bot added the datasource Changes to the datasource crate label Mar 7, 2026
Copy link
Copy Markdown
Contributor

@alamb alamb left a comment

Choose a reason for hiding this comment

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

Looks reasonable to me -- thank you

I wonder if there is any way to test this 🤔

@alamb
Copy link
Copy Markdown
Contributor

alamb commented Mar 11, 2026

Looks like CI has some failures

@mbutrovich
Copy link
Copy Markdown
Contributor

I am somewhat concerned about per-batch timing overhead. We've had to relax them in some places in Comet due to the overhead of these timers, especially since the standard library doesn't give you easy access to coarse timers like CLOCK_MONOTONIC_COARSE.

Adapt to new PushDecoderStreamState architecture: add BaselineMetrics
to the stream state and wrap the compute path (projection + metrics copy)
with an elapsed_compute timer. Update .slt test to use <slt:ignore> for
the now-populated elapsed_compute value.

Closes apache#18195
@ernestprovo23 ernestprovo23 force-pushed the fix-parquet-elapsed-compute branch from ccafa6b to a0a80db Compare March 19, 2026 13:27
@ernestprovo23
Copy link
Copy Markdown
Contributor Author

rebased on latest main — the stream construction was refactored to use PushDecoderStreamState with unfold, so I adapted the fix to wrap the compute path (project_batch + copy_arrow_reader_metrics) inside transition() with the elapsed_compute timer. the I/O path (NeedsData / get_byte_ranges) is intentionally excluded.

also updated the .slt test in dynamic_filter_pushdown_config.slt to use <slt:ignore> for the now-populated elapsed_compute value.

@mbutrovich — good point on timer overhead. the timer here fires once per decoded batch (same granularity as every other operator using BaselineMetrics). the Instant::now() cost (~25ns on most platforms) is negligible relative to the per-batch projection work. DataFusion already uses this pattern across FilterExec, ProjectionExec, SortExec, etc., so this keeps ParquetExec consistent with the rest of the execution engine.

@github-actions github-actions Bot added the sqllogictest SQL Logic Tests (.slt) label Mar 19, 2026
@alamb
Copy link
Copy Markdown
Contributor

alamb commented Mar 20, 2026

@mbutrovich can you give this one another look?

@mbutrovich mbutrovich self-requested a review March 24, 2026 16:30
Copy link
Copy Markdown
Contributor

@mbutrovich mbutrovich left a comment

Choose a reason for hiding this comment

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

LGTM pending CI, thanks @ernestprovo23.

@alamb
Copy link
Copy Markdown
Contributor

alamb commented Mar 24, 2026

run benchmarks

@alamb
Copy link
Copy Markdown
Contributor

alamb commented Mar 24, 2026

I merged up from main and kicked off some benchmarks

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Linux bench-c4121338420-524-8hmnl 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix-parquet-elapsed-compute (e724223) to f30b85c (merge-base) diff using: tpcds
Results will be posted here when complete

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Linux bench-c4121338420-523-m7f69 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix-parquet-elapsed-compute (e724223) to f30b85c (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Linux bench-c4121338420-525-lcsz2 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix-parquet-elapsed-compute (e724223) to f30b85c (merge-base) diff using: tpch
Results will be posted here when complete

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix-parquet-elapsed-compute
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃    fix-parquet-elapsed-compute ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 45.56 / 46.22 ±0.74 / 47.65 ms │ 45.74 / 46.44 ±0.65 / 47.66 ms │     no change │
│ QQuery 2  │ 21.01 / 21.30 ±0.19 / 21.52 ms │ 21.06 / 21.94 ±0.81 / 23.35 ms │     no change │
│ QQuery 3  │ 31.89 / 32.31 ±0.38 / 33.03 ms │ 31.97 / 32.53 ±0.42 / 33.17 ms │     no change │
│ QQuery 4  │ 20.80 / 21.93 ±0.64 / 22.68 ms │ 20.80 / 21.97 ±0.68 / 22.79 ms │     no change │
│ QQuery 5  │ 48.81 / 49.89 ±1.36 / 52.56 ms │ 49.01 / 50.69 ±1.39 / 52.78 ms │     no change │
│ QQuery 6  │ 17.99 / 19.58 ±1.30 / 20.84 ms │ 17.23 / 17.39 ±0.16 / 17.68 ms │ +1.13x faster │
│ QQuery 7  │ 54.52 / 56.53 ±1.58 / 58.95 ms │ 54.86 / 56.99 ±1.88 / 59.61 ms │     no change │
│ QQuery 8  │ 48.30 / 48.59 ±0.25 / 49.00 ms │ 47.73 / 48.29 ±0.49 / 49.14 ms │     no change │
│ QQuery 9  │ 55.05 / 55.64 ±0.51 / 56.54 ms │ 54.14 / 54.69 ±0.44 / 55.29 ms │     no change │
│ QQuery 10 │ 71.06 / 72.05 ±0.59 / 72.87 ms │ 70.86 / 72.32 ±1.26 / 74.59 ms │     no change │
│ QQuery 11 │ 14.07 / 14.57 ±0.56 / 15.63 ms │ 14.37 / 14.59 ±0.25 / 15.03 ms │     no change │
│ QQuery 12 │ 28.38 / 28.61 ±0.31 / 29.22 ms │ 28.32 / 29.05 ±1.17 / 31.38 ms │     no change │
│ QQuery 13 │ 38.56 / 39.59 ±0.78 / 40.85 ms │ 38.12 / 39.67 ±0.87 / 40.54 ms │     no change │
│ QQuery 14 │ 28.74 / 29.00 ±0.15 / 29.16 ms │ 28.94 / 29.42 ±0.49 / 30.28 ms │     no change │
│ QQuery 15 │ 33.96 / 34.48 ±0.49 / 35.11 ms │ 33.98 / 34.45 ±0.49 / 35.36 ms │     no change │
│ QQuery 16 │ 16.16 / 16.25 ±0.12 / 16.48 ms │ 16.37 / 16.63 ±0.18 / 16.84 ms │     no change │
│ QQuery 17 │ 73.81 / 74.98 ±0.74 / 76.12 ms │ 74.78 / 75.85 ±0.77 / 76.75 ms │     no change │
│ QQuery 18 │ 77.50 / 79.94 ±1.49 / 82.21 ms │ 78.34 / 79.88 ±1.18 / 81.72 ms │     no change │
│ QQuery 19 │ 37.77 / 38.06 ±0.19 / 38.24 ms │ 38.16 / 38.86 ±0.58 / 39.59 ms │     no change │
│ QQuery 20 │ 40.90 / 41.24 ±0.31 / 41.74 ms │ 40.32 / 41.96 ±0.87 / 42.91 ms │     no change │
│ QQuery 21 │ 65.43 / 66.52 ±1.02 / 68.28 ms │ 64.57 / 65.59 ±0.94 / 67.38 ms │     no change │
│ QQuery 22 │ 17.77 / 18.13 ±0.25 / 18.52 ms │ 18.14 / 18.35 ±0.15 / 18.54 ms │     no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 905.40ms │
│ Total Time (fix-parquet-elapsed-compute)   │ 907.54ms │
│ Average Time (HEAD)                        │  41.15ms │
│ Average Time (fix-parquet-elapsed-compute) │  41.25ms │
│ Queries Faster                             │        1 │
│ Queries Slower                             │        0 │
│ Queries with No Change                     │       21 │
│ Queries with Failure                       │        0 │
└────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 4.8s
Peak memory 4.0 GiB
Avg memory 3.6 GiB
CPU user 33.6s
CPU sys 3.1s
Disk read 0 B
Disk write 136.0 KiB

tpch — branch

Metric Value
Wall time 4.8s
Peak memory 4.0 GiB
Avg memory 3.6 GiB
CPU user 33.8s
CPU sys 3.0s
Disk read 0 B
Disk write 72.0 KiB

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix-parquet-elapsed-compute
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃                                     HEAD ┃              fix-parquet-elapsed-compute ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │           42.76 / 43.49 ±0.86 / 45.13 ms │           43.06 / 43.66 ±0.75 / 45.14 ms │ no change │
│ QQuery 2  │        146.01 / 147.17 ±0.93 / 148.85 ms │        148.08 / 148.32 ±0.17 / 148.52 ms │ no change │
│ QQuery 3  │        113.15 / 114.36 ±0.89 / 115.66 ms │        113.80 / 114.58 ±0.89 / 116.19 ms │ no change │
│ QQuery 4  │    1262.98 / 1291.73 ±17.09 / 1314.96 ms │    1285.38 / 1298.85 ±11.39 / 1315.08 ms │ no change │
│ QQuery 5  │        172.28 / 173.15 ±0.74 / 174.41 ms │        172.51 / 173.91 ±0.94 / 175.11 ms │ no change │
│ QQuery 6  │     984.66 / 1018.47 ±21.27 / 1051.24 ms │     977.27 / 1001.06 ±21.68 / 1034.13 ms │ no change │
│ QQuery 7  │        354.63 / 356.10 ±1.28 / 358.17 ms │        352.70 / 357.11 ±3.62 / 363.44 ms │ no change │
│ QQuery 8  │        112.97 / 116.14 ±1.92 / 118.05 ms │        116.37 / 117.42 ±0.62 / 118.19 ms │ no change │
│ QQuery 9  │        102.00 / 106.26 ±2.38 / 108.68 ms │        100.41 / 105.28 ±2.56 / 107.62 ms │ no change │
│ QQuery 10 │        107.15 / 108.30 ±0.81 / 109.45 ms │        107.36 / 108.47 ±0.82 / 109.68 ms │ no change │
│ QQuery 11 │        859.23 / 875.63 ±9.56 / 883.70 ms │       858.46 / 875.95 ±10.91 / 889.83 ms │ no change │
│ QQuery 12 │           44.84 / 46.08 ±1.06 / 47.61 ms │           45.16 / 46.05 ±0.98 / 47.93 ms │ no change │
│ QQuery 13 │        401.39 / 405.73 ±2.21 / 407.53 ms │        395.86 / 403.36 ±4.03 / 407.64 ms │ no change │
│ QQuery 14 │     1019.11 / 1024.62 ±5.06 / 1033.79 ms │     1022.04 / 1034.13 ±6.65 / 1040.66 ms │ no change │
│ QQuery 15 │           16.00 / 16.76 ±0.72 / 17.90 ms │           16.01 / 17.50 ±1.66 / 20.52 ms │ no change │
│ QQuery 16 │           40.54 / 41.51 ±0.51 / 42.02 ms │           40.22 / 41.09 ±0.63 / 42.15 ms │ no change │
│ QQuery 17 │        238.25 / 241.10 ±1.90 / 243.82 ms │        239.64 / 242.04 ±1.68 / 244.18 ms │ no change │
│ QQuery 18 │        127.94 / 129.32 ±1.66 / 132.55 ms │        128.29 / 130.18 ±1.44 / 132.13 ms │ no change │
│ QQuery 19 │        154.81 / 157.06 ±1.19 / 158.01 ms │        155.02 / 156.84 ±0.96 / 157.74 ms │ no change │
│ QQuery 20 │           13.33 / 14.22 ±0.53 / 14.85 ms │           13.79 / 14.30 ±0.37 / 14.76 ms │ no change │
│ QQuery 21 │           19.53 / 19.86 ±0.26 / 20.24 ms │           19.48 / 19.77 ±0.20 / 20.10 ms │ no change │
│ QQuery 22 │        486.91 / 491.66 ±4.60 / 499.68 ms │        495.75 / 498.87 ±2.81 / 502.33 ms │ no change │
│ QQuery 23 │       876.93 / 887.00 ±11.79 / 909.23 ms │        881.02 / 889.37 ±6.29 / 898.72 ms │ no change │
│ QQuery 24 │        415.07 / 418.01 ±2.18 / 421.23 ms │        416.19 / 418.44 ±2.44 / 423.10 ms │ no change │
│ QQuery 25 │        353.94 / 355.95 ±1.25 / 357.05 ms │        355.07 / 357.95 ±1.65 / 360.06 ms │ no change │
│ QQuery 26 │           81.67 / 83.13 ±0.87 / 84.30 ms │           82.73 / 84.47 ±1.59 / 86.83 ms │ no change │
│ QQuery 27 │        345.76 / 351.09 ±3.68 / 355.60 ms │        351.48 / 352.48 ±0.70 / 353.56 ms │ no change │
│ QQuery 28 │        149.66 / 150.56 ±1.15 / 152.68 ms │        150.13 / 151.52 ±1.31 / 153.94 ms │ no change │
│ QQuery 29 │        297.79 / 299.57 ±1.40 / 300.95 ms │        297.44 / 300.90 ±2.63 / 304.68 ms │ no change │
│ QQuery 30 │           43.92 / 45.00 ±1.09 / 46.48 ms │           44.61 / 45.26 ±0.75 / 46.44 ms │ no change │
│ QQuery 31 │        168.93 / 170.25 ±1.26 / 172.19 ms │        168.12 / 171.82 ±2.36 / 174.86 ms │ no change │
│ QQuery 32 │           56.89 / 58.29 ±1.37 / 60.65 ms │           56.34 / 58.14 ±1.19 / 59.91 ms │ no change │
│ QQuery 33 │        140.47 / 141.94 ±1.39 / 144.49 ms │        140.14 / 142.36 ±1.72 / 145.12 ms │ no change │
│ QQuery 34 │        106.28 / 107.15 ±0.81 / 108.17 ms │        105.70 / 106.72 ±1.18 / 108.75 ms │ no change │
│ QQuery 35 │        107.81 / 109.78 ±2.08 / 113.81 ms │        103.78 / 108.14 ±2.23 / 109.93 ms │ no change │
│ QQuery 36 │        212.00 / 217.28 ±3.52 / 222.20 ms │        214.53 / 220.37 ±4.03 / 227.20 ms │ no change │
│ QQuery 37 │        179.05 / 182.51 ±2.19 / 185.11 ms │        179.81 / 182.80 ±2.08 / 185.16 ms │ no change │
│ QQuery 38 │           86.17 / 88.81 ±2.91 / 93.91 ms │           84.50 / 88.10 ±1.89 / 89.61 ms │ no change │
│ QQuery 39 │        121.69 / 124.82 ±3.15 / 129.79 ms │        125.27 / 127.83 ±2.72 / 132.87 ms │ no change │
│ QQuery 40 │        109.41 / 116.13 ±6.89 / 129.39 ms │        108.89 / 117.06 ±7.25 / 130.26 ms │ no change │
│ QQuery 41 │           14.38 / 15.08 ±0.89 / 16.80 ms │           14.46 / 15.00 ±0.52 / 15.91 ms │ no change │
│ QQuery 42 │        106.26 / 108.61 ±1.95 / 111.11 ms │        106.55 / 109.12 ±1.70 / 110.82 ms │ no change │
│ QQuery 43 │           83.31 / 84.11 ±1.08 / 86.25 ms │           82.79 / 84.33 ±1.35 / 86.51 ms │ no change │
│ QQuery 44 │           11.02 / 11.70 ±0.37 / 12.12 ms │           11.38 / 11.74 ±0.38 / 12.30 ms │ no change │
│ QQuery 45 │           52.00 / 54.47 ±1.33 / 55.92 ms │           52.64 / 53.45 ±0.76 / 54.40 ms │ no change │
│ QQuery 46 │        230.51 / 232.74 ±1.35 / 234.06 ms │        231.68 / 232.53 ±0.44 / 232.93 ms │ no change │
│ QQuery 47 │        686.74 / 697.61 ±6.62 / 704.23 ms │        689.67 / 701.20 ±6.41 / 709.23 ms │ no change │
│ QQuery 48 │        290.25 / 294.45 ±3.07 / 298.04 ms │        290.91 / 292.05 ±1.33 / 294.45 ms │ no change │
│ QQuery 49 │        254.66 / 257.18 ±1.50 / 259.08 ms │        256.25 / 258.49 ±1.49 / 260.84 ms │ no change │
│ QQuery 50 │        233.21 / 235.28 ±1.81 / 237.90 ms │        227.20 / 229.92 ±2.08 / 232.89 ms │ no change │
│ QQuery 51 │        184.69 / 187.73 ±3.19 / 192.57 ms │        183.51 / 185.14 ±1.58 / 187.51 ms │ no change │
│ QQuery 52 │        108.89 / 109.49 ±0.63 / 110.63 ms │        107.04 / 108.30 ±0.71 / 109.13 ms │ no change │
│ QQuery 53 │        102.05 / 102.45 ±0.39 / 103.19 ms │        102.37 / 103.67 ±1.15 / 105.55 ms │ no change │
│ QQuery 54 │        148.61 / 150.18 ±1.27 / 152.24 ms │        147.27 / 148.97 ±1.78 / 152.31 ms │ no change │
│ QQuery 55 │        107.34 / 108.24 ±0.83 / 109.69 ms │        107.24 / 108.57 ±1.69 / 111.83 ms │ no change │
│ QQuery 56 │        141.61 / 143.05 ±0.91 / 144.31 ms │        139.99 / 142.41 ±1.60 / 144.33 ms │ no change │
│ QQuery 57 │        174.05 / 177.17 ±1.57 / 178.25 ms │        177.52 / 179.56 ±1.30 / 181.61 ms │ no change │
│ QQuery 58 │        295.39 / 302.84 ±5.33 / 309.70 ms │        295.13 / 304.26 ±6.32 / 312.12 ms │ no change │
│ QQuery 59 │        200.86 / 202.07 ±1.40 / 204.70 ms │        200.43 / 203.55 ±2.30 / 206.54 ms │ no change │
│ QQuery 60 │        143.89 / 145.45 ±1.14 / 146.51 ms │        142.42 / 145.36 ±2.35 / 148.36 ms │ no change │
│ QQuery 61 │        171.58 / 174.12 ±1.73 / 176.79 ms │        169.40 / 172.22 ±1.65 / 173.68 ms │ no change │
│ QQuery 62 │       887.83 / 935.70 ±41.01 / 989.35 ms │       880.27 / 914.99 ±31.44 / 958.65 ms │ no change │
│ QQuery 63 │        102.81 / 105.93 ±2.76 / 110.77 ms │        102.57 / 108.79 ±6.68 / 121.14 ms │ no change │
│ QQuery 64 │        697.43 / 702.48 ±5.20 / 711.07 ms │        706.24 / 707.95 ±1.70 / 710.75 ms │ no change │
│ QQuery 65 │        248.96 / 254.22 ±3.73 / 259.37 ms │        251.20 / 254.00 ±2.55 / 258.37 ms │ no change │
│ QQuery 66 │       233.97 / 255.90 ±12.66 / 271.89 ms │        250.76 / 256.16 ±5.79 / 267.05 ms │ no change │
│ QQuery 67 │        317.76 / 320.32 ±2.81 / 325.67 ms │        303.79 / 312.39 ±7.44 / 325.02 ms │ no change │
│ QQuery 68 │        280.62 / 282.46 ±2.16 / 286.29 ms │        277.18 / 282.28 ±2.69 / 285.00 ms │ no change │
│ QQuery 69 │        101.86 / 103.56 ±1.05 / 104.91 ms │        102.32 / 103.84 ±1.15 / 105.30 ms │ no change │
│ QQuery 70 │       338.09 / 346.61 ±10.55 / 366.87 ms │       346.84 / 355.59 ±10.46 / 373.72 ms │ no change │
│ QQuery 71 │        133.33 / 137.60 ±3.05 / 142.01 ms │        134.42 / 136.93 ±3.05 / 142.08 ms │ no change │
│ QQuery 72 │       707.21 / 721.24 ±10.01 / 733.40 ms │       711.28 / 724.35 ±11.13 / 741.73 ms │ no change │
│ QQuery 73 │        102.93 / 104.26 ±1.23 / 106.11 ms │        103.56 / 104.05 ±0.50 / 104.99 ms │ no change │
│ QQuery 74 │        538.87 / 546.88 ±5.96 / 553.82 ms │        538.72 / 547.42 ±6.46 / 555.25 ms │ no change │
│ QQuery 75 │        274.24 / 276.17 ±1.65 / 278.24 ms │        277.87 / 278.72 ±0.88 / 279.96 ms │ no change │
│ QQuery 76 │        132.74 / 133.79 ±0.90 / 135.18 ms │        131.75 / 134.65 ±1.77 / 136.53 ms │ no change │
│ QQuery 77 │        187.83 / 189.48 ±1.08 / 190.74 ms │        188.04 / 189.53 ±1.47 / 192.11 ms │ no change │
│ QQuery 78 │        353.14 / 356.97 ±2.73 / 360.50 ms │        349.79 / 356.86 ±3.77 / 360.41 ms │ no change │
│ QQuery 79 │        231.92 / 234.71 ±1.90 / 237.49 ms │        233.22 / 235.41 ±1.54 / 237.95 ms │ no change │
│ QQuery 80 │        329.28 / 331.85 ±2.31 / 336.05 ms │        328.37 / 331.66 ±3.27 / 337.56 ms │ no change │
│ QQuery 81 │           26.21 / 27.46 ±0.71 / 28.24 ms │           27.27 / 27.91 ±0.62 / 28.76 ms │ no change │
│ QQuery 82 │        202.53 / 204.73 ±1.95 / 207.03 ms │        200.41 / 204.33 ±2.65 / 207.36 ms │ no change │
│ QQuery 83 │           39.20 / 40.41 ±1.29 / 42.68 ms │           39.82 / 40.77 ±1.32 / 43.36 ms │ no change │
│ QQuery 84 │           47.59 / 48.02 ±0.45 / 48.73 ms │           47.70 / 48.77 ±0.71 / 49.43 ms │ no change │
│ QQuery 85 │        149.48 / 151.38 ±1.23 / 152.70 ms │        149.01 / 151.15 ±1.49 / 152.78 ms │ no change │
│ QQuery 86 │           39.20 / 39.74 ±0.62 / 40.92 ms │           38.68 / 40.07 ±1.03 / 41.61 ms │ no change │
│ QQuery 87 │           85.76 / 89.33 ±3.49 / 95.83 ms │           86.17 / 89.63 ±2.60 / 93.61 ms │ no change │
│ QQuery 88 │          98.72 / 99.80 ±0.60 / 100.47 ms │          99.05 / 99.86 ±0.72 / 101.10 ms │ no change │
│ QQuery 89 │        118.44 / 120.14 ±1.33 / 122.30 ms │        118.77 / 119.62 ±0.73 / 120.58 ms │ no change │
│ QQuery 90 │           22.71 / 24.16 ±1.52 / 27.05 ms │           23.02 / 23.77 ±0.53 / 24.64 ms │ no change │
│ QQuery 91 │           60.53 / 63.27 ±1.50 / 64.94 ms │           64.30 / 66.35 ±1.27 / 67.82 ms │ no change │
│ QQuery 92 │           57.52 / 59.06 ±0.79 / 59.68 ms │           57.16 / 57.57 ±0.45 / 58.42 ms │ no change │
│ QQuery 93 │        190.49 / 193.78 ±2.23 / 197.24 ms │        191.69 / 193.49 ±1.28 / 195.13 ms │ no change │
│ QQuery 94 │           59.29 / 62.51 ±2.19 / 65.74 ms │           61.51 / 62.44 ±0.94 / 63.75 ms │ no change │
│ QQuery 95 │        132.75 / 135.20 ±1.84 / 137.85 ms │        133.96 / 137.22 ±1.96 / 139.80 ms │ no change │
│ QQuery 96 │           74.40 / 75.46 ±1.60 / 78.65 ms │           73.51 / 74.22 ±0.51 / 74.75 ms │ no change │
│ QQuery 97 │        131.16 / 132.88 ±1.67 / 135.29 ms │        130.92 / 132.47 ±1.33 / 134.58 ms │ no change │
│ QQuery 98 │        153.88 / 157.41 ±1.95 / 159.30 ms │        154.57 / 155.34 ±0.84 / 156.44 ms │ no change │
│ QQuery 99 │ 10684.09 / 10729.58 ±53.96 / 10832.06 ms │ 10771.49 / 10804.59 ±29.20 / 10852.88 ms │ no change │
└───────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 33434.45ms │
│ Total Time (fix-parquet-elapsed-compute)   │ 33527.45ms │
│ Average Time (HEAD)                        │   337.72ms │
│ Average Time (fix-parquet-elapsed-compute) │   338.66ms │
│ 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 167.5s
Peak memory 5.8 GiB
Avg memory 4.7 GiB
CPU user 268.9s
CPU sys 18.1s
Disk read 0 B
Disk write 581.6 MiB

tpcds — branch

Metric Value
Wall time 167.9s
Peak memory 5.3 GiB
Avg memory 4.4 GiB
CPU user 268.6s
CPU sys 19.0s
Disk read 0 B
Disk write 796.0 KiB

@adriangbot
Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix-parquet-elapsed-compute
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           fix-parquet-elapsed-compute ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.32 / 4.65 ±6.47 / 17.60 ms │          1.35 / 4.64 ±6.47 / 17.59 ms │     no change │
│ QQuery 1  │        14.20 / 14.56 ±0.25 / 14.78 ms │        14.55 / 14.79 ±0.14 / 14.93 ms │     no change │
│ QQuery 2  │        56.00 / 56.33 ±0.25 / 56.60 ms │        57.73 / 58.09 ±0.22 / 58.38 ms │     no change │
│ QQuery 3  │        48.46 / 49.97 ±1.16 / 52.02 ms │        48.37 / 50.59 ±1.70 / 53.00 ms │     no change │
│ QQuery 4  │     299.27 / 302.89 ±2.40 / 306.42 ms │     291.60 / 298.36 ±5.54 / 305.32 ms │     no change │
│ QQuery 5  │     349.85 / 352.28 ±2.83 / 357.50 ms │     347.13 / 350.19 ±2.12 / 353.22 ms │     no change │
│ QQuery 6  │           5.11 / 5.61 ±0.50 / 6.57 ms │           5.62 / 6.69 ±0.77 / 7.79 ms │  1.19x slower │
│ QQuery 7  │        16.50 / 16.97 ±0.52 / 17.97 ms │        17.05 / 17.49 ±0.51 / 18.44 ms │     no change │
│ QQuery 8  │     422.98 / 427.53 ±2.97 / 431.50 ms │     425.03 / 438.94 ±8.12 / 446.89 ms │     no change │
│ QQuery 9  │    668.40 / 680.77 ±12.86 / 703.50 ms │     677.01 / 687.04 ±7.70 / 697.20 ms │     no change │
│ QQuery 10 │        93.01 / 94.62 ±1.35 / 96.51 ms │        90.59 / 93.22 ±2.46 / 97.67 ms │     no change │
│ QQuery 11 │     103.54 / 104.39 ±0.53 / 104.95 ms │     104.18 / 105.37 ±0.84 / 106.36 ms │     no change │
│ QQuery 12 │     342.50 / 349.59 ±6.24 / 358.72 ms │     348.87 / 352.56 ±3.19 / 358.05 ms │     no change │
│ QQuery 13 │     460.39 / 470.06 ±7.02 / 482.13 ms │    448.95 / 470.03 ±15.24 / 494.17 ms │     no change │
│ QQuery 14 │     347.58 / 356.68 ±4.89 / 362.39 ms │     349.87 / 356.39 ±4.84 / 361.98 ms │     no change │
│ QQuery 15 │    382.13 / 401.61 ±22.91 / 445.37 ms │    355.08 / 379.75 ±21.96 / 419.99 ms │ +1.06x faster │
│ QQuery 16 │     738.86 / 749.12 ±9.11 / 762.14 ms │    747.28 / 763.31 ±16.96 / 793.60 ms │     no change │
│ QQuery 17 │     720.87 / 730.80 ±8.55 / 744.99 ms │     727.95 / 734.14 ±5.70 / 741.67 ms │     no change │
│ QQuery 18 │ 1453.53 / 1489.45 ±30.56 / 1526.04 ms │ 1389.25 / 1431.15 ±48.47 / 1521.39 ms │     no change │
│ QQuery 19 │        35.60 / 39.10 ±3.87 / 46.43 ms │        35.46 / 37.91 ±2.04 / 41.40 ms │     no change │
│ QQuery 20 │    710.72 / 727.62 ±15.93 / 749.14 ms │     701.83 / 710.87 ±7.61 / 720.97 ms │     no change │
│ QQuery 21 │     752.04 / 758.90 ±4.96 / 765.70 ms │     749.03 / 755.80 ±5.18 / 761.79 ms │     no change │
│ QQuery 22 │  1129.55 / 1134.92 ±6.79 / 1148.17 ms │  1126.94 / 1133.80 ±4.74 / 1138.23 ms │     no change │
│ QQuery 23 │ 3086.94 / 3119.54 ±20.16 / 3138.00 ms │  3069.41 / 3080.32 ±8.80 / 3090.47 ms │     no change │
│ QQuery 24 │      98.61 / 102.94 ±3.11 / 107.01 ms │      99.01 / 101.14 ±1.57 / 103.16 ms │     no change │
│ QQuery 25 │     138.74 / 139.93 ±1.26 / 142.35 ms │     136.76 / 139.32 ±1.71 / 141.37 ms │     no change │
│ QQuery 26 │     101.27 / 102.47 ±0.65 / 103.15 ms │      99.66 / 101.63 ±1.48 / 103.87 ms │     no change │
│ QQuery 27 │     838.61 / 846.74 ±9.40 / 863.19 ms │     843.85 / 851.61 ±5.34 / 859.57 ms │     no change │
│ QQuery 28 │ 7722.99 / 7770.39 ±27.42 / 7798.07 ms │ 7711.98 / 7772.73 ±33.50 / 7805.77 ms │     no change │
│ QQuery 29 │        58.05 / 61.39 ±2.67 / 65.23 ms │        57.22 / 60.04 ±2.18 / 63.13 ms │     no change │
│ QQuery 30 │     361.28 / 370.32 ±7.74 / 384.38 ms │     366.66 / 374.75 ±7.06 / 386.96 ms │     no change │
│ QQuery 31 │    374.90 / 385.04 ±11.40 / 407.02 ms │     370.88 / 380.51 ±6.14 / 387.30 ms │     no change │
│ QQuery 32 │ 1045.49 / 1083.76 ±36.33 / 1142.10 ms │ 1057.66 / 1082.18 ±20.98 / 1115.27 ms │     no change │
│ QQuery 33 │  1462.11 / 1475.40 ±7.94 / 1486.31 ms │ 1473.30 / 1496.67 ±25.23 / 1542.93 ms │     no change │
│ QQuery 34 │ 1447.61 / 1497.29 ±29.31 / 1528.61 ms │ 1485.64 / 1518.63 ±29.96 / 1568.43 ms │     no change │
│ QQuery 35 │     396.54 / 406.95 ±6.80 / 417.28 ms │     398.66 / 407.78 ±6.56 / 418.35 ms │     no change │
│ QQuery 36 │     121.15 / 123.71 ±1.51 / 125.41 ms │     117.63 / 123.19 ±3.65 / 127.93 ms │     no change │
│ QQuery 37 │        48.83 / 51.80 ±2.27 / 55.70 ms │        48.83 / 50.37 ±1.28 / 52.26 ms │     no change │
│ QQuery 38 │        76.28 / 77.82 ±1.18 / 79.56 ms │        76.61 / 78.21 ±1.73 / 81.55 ms │     no change │
│ QQuery 39 │     209.69 / 220.16 ±7.46 / 227.85 ms │     206.62 / 218.12 ±6.37 / 225.35 ms │     no change │
│ QQuery 40 │        25.31 / 26.97 ±0.91 / 28.09 ms │        24.90 / 26.93 ±1.61 / 28.87 ms │     no change │
│ QQuery 41 │        19.85 / 21.67 ±1.34 / 23.95 ms │        21.11 / 22.54 ±1.07 / 24.14 ms │     no change │
│ QQuery 42 │        19.46 / 20.45 ±1.03 / 22.44 ms │        21.03 / 21.13 ±0.11 / 21.29 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 27223.14ms │
│ Total Time (fix-parquet-elapsed-compute)   │ 27158.91ms │
│ Average Time (HEAD)                        │   633.10ms │
│ Average Time (fix-parquet-elapsed-compute) │   631.60ms │
│ Queries Faster                             │          1 │
│ Queries Slower                             │          1 │
│ Queries with No Change                     │         41 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 137.3s
Peak memory 41.0 GiB
Avg memory 33.0 GiB
CPU user 1293.5s
CPU sys 88.9s
Disk read 0 B
Disk write 4.0 GiB

clickbench_partitioned — branch

Metric Value
Wall time 137.0s
Peak memory 41.2 GiB
Avg memory 33.6 GiB
CPU user 1294.5s
CPU sys 86.8s
Disk read 0 B
Disk write 760.0 KiB

@alamb
Copy link
Copy Markdown
Contributor

alamb commented Mar 24, 2026

I don't see any noticable difference in the benchmarks, so let's get this one in. Thank you @ernestprovo23 and @mbutrovich

@alamb alamb added this pull request to the merge queue Mar 24, 2026
Merged via the queue into apache:main with commit d530276 Mar 24, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

datasource Changes to the datasource crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants