Skip to content

fix: avoid FixedSizeList overflow in hash join build materialization#21023

Open
kumarUjjawal wants to merge 1 commit intoapache:mainfrom
kumarUjjawal:fix/#20673
Open

fix: avoid FixedSizeList overflow in hash join build materialization#21023
kumarUjjawal wants to merge 1 commit intoapache:mainfrom
kumarUjjawal:fix/#20673

Conversation

@kumarUjjawal
Copy link
Contributor

Which issue does this PR close?

Rationale for this change

Issue #20673 describes a panic in FULL OUTER JOIN when the build side includes a FixedSizeList column and the total element count exceeds u32::MAX.

The problem was caused by HashJoinExec concatenating the entire build side into a single batch. For FixedSizeList, this leads to take() hitting Arrow’s internal u32 indexing limit and panicking.

The fix removes the single-batch assumption. Instead, the build side remains batched, and logical row indices are mapped back to their original batches. This avoids creating oversized FixedSizeListArray instances and prevents the panic.

What changes are included in this PR?

Fix this by keeping the build side in logical batch order instead of materializing one giant RecordBatch. Add batch-aware helpers for build-side row materialization, join-key equality checks, join filters, and final unmatched-row output, while preserving existing join semantics.

Also add regression coverage for large FixedSizeList build-side indices and unmatched-row output, unit tests for the new batch helpers.

Are these changes tested?

Yes

Are there any user-facing changes?

@github-actions github-actions bot added the physical-plan Changes to the physical-plan crate label Mar 18, 2026
@Dandandan
Copy link
Contributor

run benchmarks

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4087852060-447-x7jrc 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix/#20673 (3ec2baa) to 6ab16cc (merge-base) diff using: tpcds
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4087852060-448-gbrqf 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix/#20673 (3ec2baa) to 6ab16cc (merge-base) diff using: tpch
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark running (GKE) | trigger
Linux bench-c4087852060-446-xmp4x 6.12.55+ #1 SMP Sun Feb 1 08:59:41 UTC 2026 aarch64 GNU/Linux
Comparing fix/#20673 (3ec2baa) to 6ab16cc (merge-base) diff using: clickbench_partitioned
Results will be posted here when complete

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix_#20673
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃                        fix_#20673 ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 45.72 / 46.72 ±1.08 / 48.22 ms │    45.73 / 46.21 ±0.68 / 47.56 ms │     no change │
│ QQuery 2  │ 25.71 / 26.04 ±0.28 / 26.48 ms │    25.37 / 25.63 ±0.38 / 26.38 ms │     no change │
│ QQuery 3  │ 33.92 / 34.15 ±0.22 / 34.54 ms │    33.22 / 33.46 ±0.14 / 33.67 ms │     no change │
│ QQuery 4  │ 21.67 / 22.72 ±0.88 / 23.74 ms │    21.60 / 22.40 ±0.44 / 22.85 ms │     no change │
│ QQuery 5  │ 50.42 / 53.15 ±2.64 / 57.87 ms │    50.30 / 51.54 ±1.35 / 53.53 ms │     no change │
│ QQuery 6  │ 18.02 / 19.10 ±1.21 / 20.76 ms │    17.45 / 17.78 ±0.26 / 18.23 ms │ +1.07x faster │
│ QQuery 7  │ 56.81 / 58.16 ±1.05 / 59.55 ms │    60.09 / 61.66 ±1.34 / 63.60 ms │  1.06x slower │
│ QQuery 8  │ 51.57 / 52.32 ±0.64 / 53.28 ms │    50.28 / 50.78 ±0.33 / 51.16 ms │     no change │
│ QQuery 9  │ 57.10 / 58.12 ±0.78 / 59.50 ms │    55.66 / 57.32 ±1.41 / 59.86 ms │     no change │
│ QQuery 10 │ 73.37 / 75.03 ±1.44 / 77.37 ms │    73.40 / 74.05 ±0.54 / 74.75 ms │     no change │
│ QQuery 11 │ 17.30 / 17.74 ±0.29 / 18.20 ms │    17.74 / 18.54 ±0.90 / 20.18 ms │     no change │
│ QQuery 12 │ 28.77 / 28.93 ±0.17 / 29.22 ms │    28.62 / 29.46 ±0.94 / 31.12 ms │     no change │
│ QQuery 13 │ 40.13 / 40.70 ±0.55 / 41.45 ms │    39.60 / 40.90 ±0.82 / 41.60 ms │     no change │
│ QQuery 14 │ 29.53 / 29.79 ±0.28 / 30.32 ms │    29.26 / 29.39 ±0.14 / 29.57 ms │     no change │
│ QQuery 15 │ 37.12 / 37.61 ±0.40 / 38.17 ms │    35.82 / 36.44 ±0.47 / 37.27 ms │     no change │
│ QQuery 16 │ 17.87 / 18.41 ±0.49 / 19.31 ms │    17.83 / 18.04 ±0.14 / 18.24 ms │     no change │
│ QQuery 17 │ 74.02 / 75.10 ±0.95 / 76.56 ms │    73.82 / 76.08 ±1.69 / 78.98 ms │     no change │
│ QQuery 18 │ 79.05 / 81.24 ±1.35 / 83.14 ms │ 101.34 / 103.00 ±1.04 / 103.89 ms │  1.27x slower │
│ QQuery 19 │ 38.73 / 39.59 ±0.84 / 41.01 ms │    38.88 / 39.50 ±0.43 / 40.04 ms │     no change │
│ QQuery 20 │ 43.18 / 44.64 ±1.24 / 46.44 ms │    43.34 / 43.80 ±0.36 / 44.18 ms │     no change │
│ QQuery 21 │ 68.69 / 71.10 ±1.33 / 72.77 ms │    72.93 / 75.54 ±1.33 / 76.49 ms │  1.06x slower │
│ QQuery 22 │ 21.15 / 21.33 ±0.18 / 21.66 ms │    20.18 / 20.55 ±0.26 / 20.94 ms │     no change │
└───────────┴────────────────────────────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary         ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)         │ 951.68ms │
│ Total Time (fix_#20673)   │ 972.05ms │
│ Average Time (HEAD)       │  43.26ms │
│ Average Time (fix_#20673) │  44.18ms │
│ Queries Faster            │        1 │
│ Queries Slower            │        3 │
│ Queries with No Change    │       18 │
│ Queries with Failure      │        0 │
└───────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 4.0 GiB
Avg memory 3.6 GiB
CPU user 33.1s
CPU sys 3.4s
Disk read 0 B
Disk write 148.0 KiB

tpch — branch

Metric Value
Wall time 5.1s
Peak memory 4.1 GiB
Avg memory 3.6 GiB
CPU user 35.4s
CPU sys 3.1s
Disk read 0 B
Disk write 56.0 KiB

@Dandandan
Copy link
Contributor

Dandandan commented Mar 19, 2026

#20944

there is an alternative approach here (still a bit messy code as I was experimenting around)

Key points:

  • we can pack / compose indices as e.g. (u32, u32) for batch index + offset to avoid "finding" the batch offset again
  • for the single batch cases (small left side) we can use take instead of interleave

That at least avoids regressing TPC-H, still some small regressions on TPC-DS

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix_#20673
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Query     ┃                                     HEAD ┃                            fix_#20673 ┃         Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ QQuery 1  │           47.81 / 48.47 ±0.66 / 49.55 ms │        47.53 / 48.21 ±0.60 / 48.95 ms │      no change │
│ QQuery 2  │        151.59 / 153.39 ±1.09 / 154.47 ms │     197.96 / 198.95 ±0.91 / 200.42 ms │   1.30x slower │
│ QQuery 3  │        115.66 / 117.06 ±1.38 / 119.71 ms │     121.39 / 122.07 ±0.66 / 123.19 ms │      no change │
│ QQuery 4  │    1320.69 / 1343.93 ±14.18 / 1362.42 ms │ 1735.23 / 1752.45 ±14.03 / 1775.12 ms │   1.30x slower │
│ QQuery 5  │        182.56 / 185.42 ±2.24 / 188.06 ms │     180.81 / 183.29 ±1.45 / 184.76 ms │      no change │
│ QQuery 6  │     993.30 / 1033.30 ±24.19 / 1055.82 ms │     392.18 / 395.59 ±3.77 / 402.84 ms │  +2.61x faster │
│ QQuery 7  │        354.77 / 359.88 ±4.64 / 366.68 ms │     356.03 / 359.79 ±1.98 / 361.17 ms │      no change │
│ QQuery 8  │        118.63 / 120.24 ±1.09 / 121.63 ms │     116.27 / 118.17 ±1.20 / 119.85 ms │      no change │
│ QQuery 9  │       112.34 / 119.10 ±10.08 / 139.10 ms │     111.40 / 117.12 ±3.15 / 120.92 ms │      no change │
│ QQuery 10 │        111.88 / 114.20 ±1.24 / 115.34 ms │     112.00 / 113.45 ±1.50 / 116.25 ms │      no change │
│ QQuery 11 │       906.51 / 923.43 ±10.83 / 940.06 ms │ 1310.96 / 1330.96 ±15.30 / 1346.37 ms │   1.44x slower │
│ QQuery 12 │           48.01 / 49.24 ±0.80 / 50.40 ms │        53.67 / 54.99 ±1.00 / 56.48 ms │   1.12x slower │
│ QQuery 13 │        403.95 / 409.62 ±3.05 / 412.56 ms │     403.50 / 405.71 ±1.75 / 408.54 ms │      no change │
│ QQuery 14 │     1076.84 / 1084.49 ±6.62 / 1095.60 ms │ 1361.54 / 1375.57 ±10.21 / 1389.13 ms │   1.27x slower │
│ QQuery 15 │           18.34 / 20.08 ±1.20 / 21.28 ms │        18.93 / 19.24 ±0.28 / 19.74 ms │      no change │
│ QQuery 16 │           44.58 / 45.54 ±0.67 / 46.45 ms │        43.96 / 45.30 ±0.75 / 46.09 ms │      no change │
│ QQuery 17 │        242.62 / 247.47 ±3.26 / 251.37 ms │     246.58 / 247.52 ±1.09 / 249.26 ms │      no change │
│ QQuery 18 │        133.92 / 134.89 ±1.12 / 136.74 ms │     133.80 / 134.70 ±0.82 / 136.00 ms │      no change │
│ QQuery 19 │        157.21 / 158.67 ±1.18 / 160.64 ms │     157.80 / 158.96 ±0.96 / 160.57 ms │      no change │
│ QQuery 20 │           16.46 / 16.88 ±0.31 / 17.29 ms │        16.33 / 16.69 ±0.34 / 17.13 ms │      no change │
│ QQuery 21 │           24.08 / 25.08 ±0.65 / 25.70 ms │        23.83 / 24.54 ±0.60 / 25.30 ms │      no change │
│ QQuery 22 │        489.64 / 494.71 ±4.50 / 501.66 ms │     546.70 / 551.37 ±2.72 / 554.60 ms │   1.11x slower │
│ QQuery 23 │        928.69 / 939.75 ±6.61 / 945.95 ms │  1006.16 / 1013.87 ±7.68 / 1025.24 ms │   1.08x slower │
│ QQuery 24 │        430.71 / 433.51 ±2.75 / 438.08 ms │     424.46 / 426.17 ±1.18 / 427.74 ms │      no change │
│ QQuery 25 │        359.35 / 361.97 ±2.27 / 366.20 ms │     356.70 / 359.65 ±1.84 / 361.99 ms │      no change │
│ QQuery 26 │           86.11 / 87.79 ±1.56 / 89.92 ms │        84.95 / 86.42 ±1.24 / 88.14 ms │      no change │
│ QQuery 27 │        351.29 / 353.83 ±1.70 / 356.59 ms │     350.72 / 353.39 ±3.76 / 360.79 ms │      no change │
│ QQuery 28 │        154.12 / 156.70 ±1.96 / 158.91 ms │     153.80 / 154.87 ±1.36 / 157.44 ms │      no change │
│ QQuery 29 │        304.15 / 306.78 ±2.48 / 309.91 ms │     297.96 / 300.94 ±2.12 / 304.45 ms │      no change │
│ QQuery 30 │           48.63 / 49.76 ±1.26 / 52.23 ms │        46.55 / 49.14 ±2.15 / 51.71 ms │      no change │
│ QQuery 31 │        180.02 / 181.44 ±1.32 / 183.57 ms │     174.68 / 176.37 ±1.18 / 178.20 ms │      no change │
│ QQuery 32 │         61.76 / 70.79 ±17.49 / 105.75 ms │        59.63 / 60.86 ±1.21 / 63.16 ms │  +1.16x faster │
│ QQuery 33 │        148.55 / 151.15 ±1.94 / 152.96 ms │     147.03 / 149.20 ±1.43 / 151.00 ms │      no change │
│ QQuery 34 │        109.66 / 110.79 ±0.77 / 111.71 ms │     109.82 / 111.46 ±1.03 / 112.91 ms │      no change │
│ QQuery 35 │        114.87 / 116.15 ±0.97 / 117.58 ms │     114.88 / 116.25 ±1.50 / 119.09 ms │      no change │
│ QQuery 36 │        220.81 / 223.55 ±2.77 / 228.10 ms │     223.34 / 227.99 ±2.92 / 230.97 ms │      no change │
│ QQuery 37 │        181.87 / 184.53 ±2.68 / 188.94 ms │     180.12 / 181.36 ±1.31 / 183.84 ms │      no change │
│ QQuery 38 │           91.21 / 94.56 ±1.75 / 96.08 ms │        92.42 / 95.30 ±1.68 / 97.52 ms │      no change │
│ QQuery 39 │        142.58 / 143.66 ±0.67 / 144.31 ms │     139.99 / 142.88 ±1.69 / 145.19 ms │      no change │
│ QQuery 40 │        115.01 / 122.24 ±7.68 / 136.10 ms │     112.40 / 114.55 ±1.81 / 117.59 ms │  +1.07x faster │
│ QQuery 41 │           17.76 / 18.53 ±0.71 / 19.68 ms │        18.09 / 18.50 ±0.35 / 18.96 ms │      no change │
│ QQuery 42 │        111.08 / 112.36 ±0.97 / 113.93 ms │     108.96 / 110.99 ±1.10 / 111.97 ms │      no change │
│ QQuery 43 │           86.61 / 87.57 ±0.61 / 88.42 ms │        85.42 / 85.92 ±0.51 / 86.55 ms │      no change │
│ QQuery 44 │           17.42 / 17.98 ±0.50 / 18.83 ms │        17.56 / 18.22 ±0.84 / 19.77 ms │      no change │
│ QQuery 45 │           56.46 / 57.61 ±1.00 / 59.37 ms │        56.25 / 57.24 ±0.76 / 58.54 ms │      no change │
│ QQuery 46 │        238.67 / 241.30 ±1.79 / 243.63 ms │     235.21 / 237.60 ±2.84 / 242.98 ms │      no change │
│ QQuery 47 │       730.38 / 755.97 ±22.82 / 787.41 ms │     816.82 / 823.23 ±5.90 / 833.06 ms │   1.09x slower │
│ QQuery 48 │        299.59 / 303.25 ±2.87 / 308.32 ms │     283.63 / 287.38 ±3.01 / 291.17 ms │  +1.06x faster │
│ QQuery 49 │        262.96 / 267.75 ±3.58 / 271.08 ms │     260.99 / 263.71 ±2.13 / 267.22 ms │      no change │
│ QQuery 50 │        246.40 / 251.48 ±4.27 / 258.21 ms │     237.67 / 242.71 ±2.74 / 245.62 ms │      no change │
│ QQuery 51 │        187.11 / 191.45 ±2.38 / 194.09 ms │     187.28 / 191.87 ±2.79 / 195.94 ms │      no change │
│ QQuery 52 │        109.86 / 110.69 ±0.57 / 111.64 ms │     108.82 / 110.38 ±0.93 / 111.38 ms │      no change │
│ QQuery 53 │        106.81 / 108.09 ±1.24 / 110.22 ms │     107.42 / 109.14 ±1.86 / 112.03 ms │      no change │
│ QQuery 54 │        155.41 / 156.58 ±1.52 / 159.40 ms │     152.18 / 153.71 ±0.98 / 155.19 ms │      no change │
│ QQuery 55 │        110.46 / 112.33 ±1.51 / 114.82 ms │     108.08 / 109.90 ±2.08 / 113.41 ms │      no change │
│ QQuery 56 │        151.95 / 152.40 ±0.57 / 153.52 ms │     147.90 / 149.33 ±0.97 / 150.28 ms │      no change │
│ QQuery 57 │        184.36 / 188.94 ±4.32 / 196.91 ms │     199.21 / 201.01 ±1.02 / 202.26 ms │   1.06x slower │
│ QQuery 58 │        300.64 / 310.60 ±8.16 / 323.44 ms │     315.21 / 318.88 ±2.60 / 323.14 ms │      no change │
│ QQuery 59 │        207.95 / 210.01 ±1.71 / 212.23 ms │     243.19 / 245.34 ±1.22 / 246.82 ms │   1.17x slower │
│ QQuery 60 │        153.95 / 155.49 ±1.31 / 157.31 ms │     151.32 / 152.96 ±1.00 / 154.44 ms │      no change │
│ QQuery 61 │        176.66 / 179.61 ±1.96 / 181.86 ms │     178.16 / 179.23 ±0.69 / 180.16 ms │      no change │
│ QQuery 62 │       894.31 / 931.41 ±25.22 / 973.17 ms │     230.94 / 246.64 ±7.99 / 252.68 ms │  +3.78x faster │
│ QQuery 63 │        107.94 / 110.67 ±2.24 / 114.26 ms │     106.43 / 109.11 ±1.89 / 112.35 ms │      no change │
│ QQuery 64 │        723.81 / 728.85 ±3.25 / 733.42 ms │     708.63 / 714.38 ±4.26 / 720.89 ms │      no change │
│ QQuery 65 │        256.99 / 261.30 ±3.20 / 265.32 ms │     250.93 / 256.81 ±4.01 / 261.72 ms │      no change │
│ QQuery 66 │        260.51 / 263.72 ±4.65 / 272.87 ms │     262.87 / 272.82 ±9.88 / 287.49 ms │      no change │
│ QQuery 67 │        314.16 / 323.40 ±7.96 / 336.19 ms │     328.27 / 333.14 ±3.55 / 337.83 ms │      no change │
│ QQuery 68 │        285.26 / 289.19 ±3.75 / 294.73 ms │     279.05 / 284.88 ±3.95 / 291.03 ms │      no change │
│ QQuery 69 │        108.52 / 109.24 ±0.61 / 109.90 ms │     107.48 / 108.18 ±0.66 / 109.21 ms │      no change │
│ QQuery 70 │        348.75 / 357.00 ±9.49 / 375.47 ms │     352.32 / 360.56 ±4.26 / 364.62 ms │      no change │
│ QQuery 71 │        137.88 / 140.23 ±1.99 / 142.78 ms │     138.96 / 142.18 ±3.61 / 148.56 ms │      no change │
│ QQuery 72 │       708.98 / 736.40 ±14.36 / 748.42 ms │    936.33 / 957.78 ±13.58 / 977.33 ms │   1.30x slower │
│ QQuery 73 │        106.26 / 108.49 ±1.72 / 110.88 ms │     105.67 / 107.59 ±1.83 / 110.82 ms │      no change │
│ QQuery 74 │        560.16 / 565.49 ±6.84 / 578.54 ms │    748.46 / 766.88 ±15.57 / 785.84 ms │   1.36x slower │
│ QQuery 75 │        289.17 / 291.76 ±1.44 / 293.23 ms │     303.17 / 304.38 ±0.74 / 305.26 ms │      no change │
│ QQuery 76 │        136.65 / 139.25 ±2.58 / 143.85 ms │     137.78 / 138.82 ±1.13 / 140.63 ms │      no change │
│ QQuery 77 │        200.92 / 202.25 ±1.67 / 205.38 ms │     201.15 / 203.01 ±1.41 / 204.38 ms │      no change │
│ QQuery 78 │        357.68 / 362.94 ±3.19 / 367.61 ms │     365.27 / 368.78 ±3.15 / 374.39 ms │      no change │
│ QQuery 79 │        239.21 / 241.59 ±1.77 / 244.34 ms │     236.65 / 238.73 ±2.56 / 243.63 ms │      no change │
│ QQuery 80 │        341.93 / 345.24 ±2.67 / 350.00 ms │     343.95 / 348.04 ±2.24 / 350.15 ms │      no change │
│ QQuery 81 │           32.06 / 33.09 ±1.19 / 35.40 ms │        31.95 / 32.94 ±0.75 / 33.78 ms │      no change │
│ QQuery 82 │        206.01 / 208.30 ±1.75 / 210.75 ms │     205.03 / 206.81 ±1.61 / 209.08 ms │      no change │
│ QQuery 83 │           46.90 / 47.75 ±0.59 / 48.75 ms │        50.11 / 52.53 ±2.84 / 57.92 ms │   1.10x slower │
│ QQuery 84 │           50.83 / 51.96 ±0.89 / 53.16 ms │        52.29 / 52.61 ±0.26 / 53.07 ms │      no change │
│ QQuery 85 │        152.61 / 155.34 ±1.74 / 157.65 ms │     154.39 / 157.42 ±3.24 / 163.37 ms │      no change │
│ QQuery 86 │           40.74 / 41.93 ±0.84 / 42.73 ms │        42.03 / 43.34 ±1.37 / 45.97 ms │      no change │
│ QQuery 87 │           91.97 / 94.43 ±2.11 / 98.18 ms │       94.06 / 96.69 ±3.47 / 103.24 ms │      no change │
│ QQuery 88 │        112.86 / 113.88 ±0.90 / 115.48 ms │     114.44 / 114.83 ±0.25 / 115.15 ms │      no change │
│ QQuery 89 │        121.78 / 122.51 ±0.71 / 123.78 ms │     128.89 / 130.57 ±0.88 / 131.33 ms │   1.07x slower │
│ QQuery 90 │           28.02 / 29.24 ±0.92 / 30.61 ms │        28.62 / 29.33 ±0.53 / 30.07 ms │      no change │
│ QQuery 91 │           65.85 / 67.66 ±1.02 / 68.76 ms │        64.15 / 65.94 ±1.19 / 67.11 ms │      no change │
│ QQuery 92 │           59.83 / 60.60 ±0.47 / 61.12 ms │        62.31 / 62.59 ±0.22 / 62.90 ms │      no change │
│ QQuery 93 │        193.22 / 195.82 ±1.94 / 199.14 ms │     194.93 / 197.17 ±2.84 / 202.62 ms │      no change │
│ QQuery 94 │           65.14 / 66.71 ±1.00 / 68.16 ms │        64.98 / 66.18 ±0.76 / 67.23 ms │      no change │
│ QQuery 95 │        138.38 / 141.90 ±2.31 / 145.62 ms │     160.17 / 164.15 ±2.58 / 167.70 ms │   1.16x slower │
│ QQuery 96 │           76.45 / 77.85 ±1.58 / 80.91 ms │        74.45 / 75.98 ±1.02 / 77.24 ms │      no change │
│ QQuery 97 │        133.64 / 135.69 ±1.30 / 137.52 ms │     132.87 / 135.15 ±2.36 / 139.37 ms │      no change │
│ QQuery 98 │        155.22 / 157.55 ±1.75 / 160.25 ms │     187.25 / 187.82 ±0.46 / 188.55 ms │   1.19x slower │
│ QQuery 99 │ 10675.10 / 10712.39 ±31.29 / 10756.61 ms │    433.28 / 448.17 ±17.29 / 480.54 ms │ +23.90x faster │
└───────────┴──────────────────────────────────────────┴───────────────────────────────────────┴────────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary         ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)         │ 34307.06ms │
│ Total Time (fix_#20673)   │ 24545.51ms │
│ Average Time (HEAD)       │   346.54ms │
│ Average Time (fix_#20673) │   247.93ms │
│ Queries Faster            │          6 │
│ Queries Slower            │         16 │
│ Queries with No Change    │         77 │
│ Queries with Failure      │          0 │
└───────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 171.9s
Peak memory 5.6 GiB
Avg memory 4.6 GiB
CPU user 272.0s
CPU sys 21.4s
Disk read 0 B
Disk write 572.4 MiB

tpcds — branch

Metric Value
Wall time 123.0s
Peak memory 4.7 GiB
Avg memory 4.1 GiB
CPU user 239.0s
CPU sys 19.4s
Disk read 0 B
Disk write 188.0 KiB

@adriangbot
Copy link

🤖 Benchmark completed (GKE) | trigger

Details

Comparing HEAD and fix_#20673
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                            fix_#20673 ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.63 / 4.85 ±6.34 / 17.53 ms │          1.66 / 4.86 ±6.32 / 17.51 ms │     no change │
│ QQuery 1  │        14.78 / 15.20 ±0.28 / 15.61 ms │        15.53 / 15.85 ±0.19 / 16.08 ms │     no change │
│ QQuery 2  │        56.55 / 57.14 ±0.38 / 57.57 ms │        56.72 / 57.17 ±0.58 / 58.32 ms │     no change │
│ QQuery 3  │        50.64 / 51.13 ±0.36 / 51.46 ms │        48.27 / 50.74 ±1.25 / 51.58 ms │     no change │
│ QQuery 4  │    291.34 / 304.80 ±10.37 / 319.06 ms │     287.11 / 295.56 ±5.89 / 305.37 ms │     no change │
│ QQuery 5  │     348.00 / 351.22 ±2.14 / 353.68 ms │     347.02 / 349.22 ±2.02 / 352.58 ms │     no change │
│ QQuery 6  │          5.08 / 7.76 ±3.50 / 14.67 ms │           5.54 / 6.12 ±0.46 / 6.96 ms │ +1.27x faster │
│ QQuery 7  │        17.05 / 17.33 ±0.19 / 17.58 ms │        17.86 / 18.43 ±0.45 / 19.18 ms │  1.06x slower │
│ QQuery 8  │     416.79 / 426.09 ±6.78 / 434.47 ms │    412.53 / 436.46 ±18.74 / 466.67 ms │     no change │
│ QQuery 9  │     641.05 / 648.36 ±6.99 / 658.94 ms │     647.55 / 657.17 ±6.85 / 665.14 ms │     no change │
│ QQuery 10 │       92.51 / 96.28 ±3.60 / 102.33 ms │        90.86 / 95.10 ±2.78 / 98.28 ms │     no change │
│ QQuery 11 │     104.11 / 105.23 ±0.80 / 106.05 ms │     104.63 / 105.63 ±0.96 / 106.82 ms │     no change │
│ QQuery 12 │     347.63 / 353.85 ±4.23 / 360.17 ms │     348.22 / 353.32 ±3.74 / 357.99 ms │     no change │
│ QQuery 13 │    444.92 / 467.05 ±17.34 / 495.52 ms │    451.94 / 468.95 ±11.45 / 485.56 ms │     no change │
│ QQuery 14 │     348.33 / 353.97 ±6.29 / 365.96 ms │     348.45 / 359.65 ±9.46 / 373.76 ms │     no change │
│ QQuery 15 │    355.08 / 382.52 ±23.40 / 412.80 ms │     353.64 / 366.04 ±9.17 / 375.60 ms │     no change │
│ QQuery 16 │    718.70 / 734.28 ±14.21 / 760.66 ms │     732.79 / 748.04 ±9.59 / 759.74 ms │     no change │
│ QQuery 17 │    709.75 / 731.26 ±15.42 / 753.89 ms │     713.70 / 723.40 ±6.85 / 732.03 ms │     no change │
│ QQuery 18 │ 1382.59 / 1447.05 ±35.02 / 1477.46 ms │ 1422.43 / 1492.19 ±38.67 / 1533.84 ms │     no change │
│ QQuery 19 │        36.55 / 37.92 ±1.97 / 41.73 ms │       36.37 / 43.53 ±13.32 / 70.14 ms │  1.15x slower │
│ QQuery 20 │    716.09 / 735.60 ±21.96 / 771.40 ms │    716.25 / 730.11 ±14.38 / 757.01 ms │     no change │
│ QQuery 21 │     760.08 / 766.79 ±3.81 / 771.37 ms │    764.96 / 779.09 ±16.34 / 810.91 ms │     no change │
│ QQuery 22 │ 1123.21 / 1140.13 ±15.88 / 1164.65 ms │  1122.65 / 1127.49 ±4.20 / 1134.52 ms │     no change │
│ QQuery 23 │ 3167.88 / 3194.12 ±23.07 / 3225.14 ms │  3163.87 / 3177.78 ±9.13 / 3190.32 ms │     no change │
│ QQuery 24 │      99.23 / 103.80 ±5.33 / 113.29 ms │     100.80 / 104.44 ±2.05 / 107.09 ms │     no change │
│ QQuery 25 │     138.95 / 141.41 ±1.95 / 144.73 ms │     140.81 / 142.54 ±0.92 / 143.27 ms │     no change │
│ QQuery 26 │      99.32 / 104.22 ±2.75 / 106.69 ms │     102.92 / 104.00 ±0.64 / 104.76 ms │     no change │
│ QQuery 27 │     844.78 / 848.13 ±2.85 / 852.97 ms │     845.71 / 850.81 ±4.49 / 856.86 ms │     no change │
│ QQuery 28 │ 7693.99 / 7748.31 ±35.41 / 7790.05 ms │ 7702.50 / 7732.24 ±25.53 / 7777.30 ms │     no change │
│ QQuery 29 │        57.97 / 60.92 ±3.40 / 66.78 ms │        56.69 / 62.07 ±4.28 / 68.87 ms │     no change │
│ QQuery 30 │     356.94 / 365.61 ±6.08 / 372.29 ms │     364.50 / 368.60 ±3.75 / 375.17 ms │     no change │
│ QQuery 31 │    357.70 / 378.33 ±15.53 / 400.39 ms │     369.91 / 380.58 ±6.76 / 389.55 ms │     no change │
│ QQuery 32 │ 1265.50 / 1308.94 ±31.84 / 1363.30 ms │ 1205.79 / 1276.67 ±36.96 / 1314.34 ms │     no change │
│ QQuery 33 │ 1443.11 / 1544.70 ±65.69 / 1640.80 ms │ 1504.77 / 1587.22 ±45.57 / 1635.84 ms │     no change │
│ QQuery 34 │ 1442.54 / 1455.15 ±12.59 / 1475.31 ms │ 1521.89 / 1594.99 ±47.08 / 1654.04 ms │  1.10x slower │
│ QQuery 35 │     375.80 / 382.31 ±3.94 / 386.60 ms │    412.99 / 431.83 ±11.86 / 442.44 ms │  1.13x slower │
│ QQuery 36 │     112.84 / 122.88 ±5.71 / 128.85 ms │    118.73 / 134.79 ±12.49 / 156.67 ms │  1.10x slower │
│ QQuery 37 │        47.60 / 50.62 ±2.11 / 53.56 ms │        50.67 / 51.33 ±0.56 / 52.23 ms │     no change │
│ QQuery 38 │        76.39 / 77.55 ±0.95 / 79.01 ms │        81.13 / 85.44 ±2.23 / 87.29 ms │  1.10x slower │
│ QQuery 39 │     208.53 / 224.01 ±9.81 / 233.90 ms │     224.61 / 229.99 ±4.06 / 236.81 ms │     no change │
│ QQuery 40 │        23.44 / 26.67 ±2.57 / 31.17 ms │        23.35 / 27.12 ±2.86 / 31.43 ms │     no change │
│ QQuery 41 │        21.05 / 21.67 ±0.33 / 22.03 ms │        20.57 / 21.93 ±1.33 / 24.42 ms │     no change │
│ QQuery 42 │        20.05 / 20.96 ±1.31 / 23.55 ms │        20.79 / 22.18 ±1.28 / 24.54 ms │  1.06x slower │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary         ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)         │ 27416.13ms │
│ Total Time (fix_#20673)   │ 27670.65ms │
│ Average Time (HEAD)       │   637.58ms │
│ Average Time (fix_#20673) │   643.50ms │
│ Queries Faster            │          1 │
│ Queries Slower            │          7 │
│ Queries with No Change    │         35 │
│ Queries with Failure      │          0 │
└───────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 138.2s
Peak memory 40.5 GiB
Avg memory 29.2 GiB
CPU user 1280.2s
CPU sys 105.0s
Disk read 0 B
Disk write 4.0 GiB

clickbench_partitioned — branch

Metric Value
Wall time 138.9s
Peak memory 39.6 GiB
Avg memory 29.4 GiB
CPU user 1282.1s
CPU sys 111.1s
Disk read 0 B
Disk write 116.0 KiB

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

Labels

physical-plan Changes to the physical-plan crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Panic in FULL OUTER JOIN with schema of (u32, FSL) when number of rows and size of FSL exceed u32::MAX and target_partition=1

3 participants