Segment pruning for multi-dim partitioning given query domain#12046
Merged
abhishekagarwal87 merged 7 commits intoapache:masterfrom Dec 17, 2021
Merged
Segment pruning for multi-dim partitioning given query domain#12046abhishekagarwal87 merged 7 commits intoapache:masterfrom
abhishekagarwal87 merged 7 commits intoapache:masterfrom
Conversation
kfaraz
requested changes
Dec 9, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 9, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
|
This pull request introduces 2 alerts when merging b70c0c9 into 6ac4e2d - view on LGTM.com new alerts:
|
LakshSingla
reviewed
Dec 9, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
LakshSingla
reviewed
Dec 9, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
LakshSingla
reviewed
Dec 9, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 10, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 10, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 10, 2021
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 10, 2021
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
kfaraz
reviewed
Dec 10, 2021
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
LakshSingla
reviewed
Dec 13, 2021
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
kfaraz
requested changes
Dec 13, 2021
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/apache/druid/timeline/partition/DimensionRangeShardSpecTest.java
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/apache/druid/timeline/partition/DimensionRangeShardSpec.java
Show resolved
Hide resolved
kfaraz
approved these changes
Dec 15, 2021
Contributor
|
Logic looks good to me. |
abhishekagarwal87
approved these changes
Dec 16, 2021
Contributor
|
Merged the change since failure is unrelated and code change doesn't affect the phase 2 tests. |
Contributor
|
Thank you @AmatyaAvadhanula for your first contribution. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Segment pruning for multi-dim partitioning for a given query
DimensionRangeShardSpec#possibleInDomainhas been modified to enhance pruning when multi-dim partitioning is used.Idea
While iterating through each dimension,
Example
Index on (Hour, Minute, Second). Index.size is 3
I)
start = (3, 25, 10)
end = (5, 10, 30)
query domain = {3} * [0, 10] * {10, 20, 30, 40}
EffectiveDomain[:1] == {3} == start[:1]
EffectiveDomain[:2] == {3} * ([0, 10] INTERSECTION [25, INF))
== {} -> PRUNE
II)
start = (3, 25, 10)
end = (5, 15, 30)
query domain = {4} * [0, 10] * {10, 20, 30, 40}
EffectiveDomain[:1] == {4} (!= {} && != start[:1] && != {end[:1]}) -> ACCEPT
III)
start = (3, 25, 10)
end = (5, 15, 30)
query domain = {5} * [0, 10] * {10, 20, 30, 40}
EffectiveDomain[:1] == {5} == end[:1]
EffectiveDomain[:2] == {5} * ([0, 10] INTERSECTION (-INF, 15])
== {5} * [0, 10] (! ={} && != {end[:2]}) -> ACCEPT
IV)
start = (3, 25, 10)
end = (5, 15, 30)
query domain = {5} * [15, 40] * {10, 20, 30, 40}
EffectiveDomain[:1] == {5} == end[:1]
EffectiveDomain[:2] == {5} * ([15, 40] INTERSECTION (-INF, 15])
== {5} * {15} == {end[:2]}
EffectiveDomain[:3] == {5} * {15} * ({10, 20, 30, 40} * (-INF, 30])
== {5} * {15} * {10, 20, 30} != {} -> ACCEPT
V)
start = (3, 25, 10)
end = (5, 15, 30)
query domain = {5} * [15, 40] * {50}
EffectiveDomain[:1] == {5} == end[:1]
EffectiveDomain[:2] == {5} * ([15, 40] INTERSECTION (-INF, 15])
== {5} * {15} == {end[:2]}
EffectiveDomain[:3] == {5} * {15} * ({40} * (-INF, 30])
== {5} * {15} * {}
== {} -> PRUNE
This PR has: