This is an automated email from the ASF dual-hosted git repository.
gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new b7e9f5b BoundDimFilter: Simplify the various DruidLongPredicates.
(#10906)
b7e9f5b is described below
commit b7e9f5bc852f516e1ab1ce80b09572e7b473b277
Author: Gian Merlino <[email protected]>
AuthorDate: Fri Feb 19 16:44:56 2021 -0800
BoundDimFilter: Simplify the various DruidLongPredicates. (#10906)
They all use Long.compare, but they don't need to. Changing to
regular comparisons simplifies the code and also removes branches.
(Internally, Long.compare has two branches.)
---
.../apache/druid/query/filter/BoundDimFilter.java | 84 +++-------------------
1 file changed, 8 insertions(+), 76 deletions(-)
diff --git
a/processing/src/main/java/org/apache/druid/query/filter/BoundDimFilter.java
b/processing/src/main/java/org/apache/druid/query/filter/BoundDimFilter.java
index 4b6fc87..51ce293 100644
--- a/processing/src/main/java/org/apache/druid/query/filter/BoundDimFilter.java
+++ b/processing/src/main/java/org/apache/druid/query/filter/BoundDimFilter.java
@@ -615,93 +615,25 @@ public class BoundDimFilter extends
AbstractOptimizableDimFilter implements DimF
{
if (hasLowerLongBound && hasUpperLongBound) {
if (upperStrict && lowerStrict) {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- final int upperComparing = Long.compare(upperLongBound, input);
- return ((lowerComparing > 0)) && (upperComparing > 0);
- }
- };
+ return input -> input > lowerLongBound && input < upperLongBound;
} else if (lowerStrict) {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- final int upperComparing = Long.compare(upperLongBound, input);
- return (lowerComparing > 0) && (upperComparing >= 0);
- }
- };
+ return input -> input > lowerLongBound && input <= upperLongBound;
} else if (upperStrict) {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- final int upperComparing = Long.compare(upperLongBound, input);
- return (lowerComparing >= 0) && (upperComparing > 0);
- }
- };
+ return input -> input >= lowerLongBound && input < upperLongBound;
} else {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- final int upperComparing = Long.compare(upperLongBound, input);
- return (lowerComparing >= 0) && (upperComparing >= 0);
- }
- };
+ return input -> input >= lowerLongBound && input <= upperLongBound;
}
} else if (hasUpperLongBound) {
if (upperStrict) {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int upperComparing = Long.compare(upperLongBound, input);
- return upperComparing > 0;
- }
- };
+ return input -> input < upperLongBound;
} else {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int upperComparing = Long.compare(upperLongBound, input);
- return upperComparing >= 0;
- }
- };
+ return input -> input <= upperLongBound;
}
} else if (hasLowerLongBound) {
if (lowerStrict) {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- return lowerComparing > 0;
- }
- };
+ return input -> input > lowerLongBound;
} else {
- return new DruidLongPredicate()
- {
- @Override
- public boolean applyLong(long input)
- {
- final int lowerComparing = Long.compare(input, lowerLongBound);
- return lowerComparing >= 0;
- }
- };
+ return input -> input >= lowerLongBound;
}
} else {
return DruidLongPredicate.ALWAYS_TRUE;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]