Repository navigation
Preserve short IN lists for dictionary strings and binary values - #26946
Rich-T-kid wants to merge 3 commits into
Conversation
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 841faaf (841faaf) to 926901f diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "841faafb6971aa0d180e93098a62974a71095aea"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing a7aa6d1 (a7aa6d1) to 926901f diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "926901f9001977e85df617b96328801b42f6af4a"
changed:
ref: "a7aa6d133e1b9ab56c2a81dec061ed6e847178ee"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Which issue does this PR close?
Rationale for this change
For dictionary string and binary columns, rewriting a short
INlist into equality chains repeats dictionary evaluation and key expansion for each value. Keeping the membership expression evaluates the dictionary values once and expands one result through the keys.For example, given:
dict_col IN ('MAIL', 'SHIP')previously compared the dictionary values withMAIL, expanded that result through the keys, then repeated the work forSHIPbefore combining the two row-level results. This change checks the dictionary values against both literals together and expands through the keys once.TPC-H Q12 has two of these expressions when Parquet RLE-to-dictionary conversion is enabled.
What changes are included in this PR?
The short
INsimplifier now retains literalINandNOT INexpressions for dictionaries withUtf8,Utf8View,Binary, orLargeBinaryvalues. Other string and binary columns keep the existing rewrite behavior.The existing type-based simplifier test covers the supported dictionary value types.
Are there any user-facing changes?
No.