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 e03e222e330 remove ExprEval.valueOrDefault() which is equivalent to
value() after removal of druid.generic.useDefaultValueForNull=true (#18318)
e03e222e330 is described below
commit e03e222e330e0581155788b3de32a027fc7dfe6f
Author: Clint Wylie <[email protected]>
AuthorDate: Wed Jul 23 22:59:39 2025 -0700
remove ExprEval.valueOrDefault() which is equivalent to value() after
removal of druid.generic.useDefaultValueForNull=true (#18318)
---
.../main/java/org/apache/druid/math/expr/Expr.java | 2 +-
.../java/org/apache/druid/math/expr/ExprEval.java | 28 ++--------------------
.../expr/ExpressionPredicateIndexSupplier.java | 2 +-
.../aggregation/ExpressionLambdaAggregator.java | 4 ++--
.../ExpressionLambdaAggregatorFactory.java | 4 ++--
.../ExpressionLambdaAggregatorInputBindings.java | 2 +-
.../ExpressionLambdaBufferAggregator.java | 2 +-
.../aggregation/post/ExpressionPostAggregator.java | 10 ++++----
.../apache/druid/query/expression/ExprUtils.java | 2 +-
.../query/filter/ArrayContainsElementFilter.java | 14 +++++------
.../apache/druid/query/filter/EqualityFilter.java | 2 +-
.../druid/segment/AutoTypeColumnIndexer.java | 2 +-
.../druid/segment/filter/ExpressionFilter.java | 4 ++--
.../segment/transform/ExpressionTransform.java | 4 ++--
...ressionDeferredGroupByVectorColumnSelector.java | 2 +-
.../druid/segment/virtual/ExpressionSelectors.java | 6 ++---
.../segment/virtual/ExpressionVectorSelectors.java | 4 ++--
.../java/org/apache/druid/math/expr/EvalTest.java | 18 +++++++-------
.../math/expr/VectorExprResultConsistencyTest.java | 8 +++----
.../builtin/ArrayContainsOperatorConversion.java | 2 +-
.../builtin/ArrayOverlapOperatorConversion.java | 2 +-
.../druid/sql/calcite/filtration/Ranges.java | 8 +++----
.../sql/calcite/planner/DruidRexExecutor.java | 4 ++--
.../druid/sql/calcite/rule/DruidUnnestRule.java | 2 +-
24 files changed, 57 insertions(+), 81 deletions(-)
diff --git a/processing/src/main/java/org/apache/druid/math/expr/Expr.java
b/processing/src/main/java/org/apache/druid/math/expr/Expr.java
index b287d8f1289..e82bd6d7b9e 100644
--- a/processing/src/main/java/org/apache/druid/math/expr/Expr.java
+++ b/processing/src/main/java/org/apache/druid/math/expr/Expr.java
@@ -228,7 +228,7 @@ public interface Expr extends Cacheable
if (delegateIndexSupplier == null) {
// if the column doesn't exist, check to see if the expression
evaluates to a non-null result... if so, we might
// need to make a value matcher anyway
- if (eval(InputBindings.nilBindings()).valueOrDefault() != null) {
+ if (eval(InputBindings.nilBindings()).value() != null) {
return NoIndexesColumnIndexSupplier.getInstance();
}
return null;
diff --git a/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
b/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
index a755d7577eb..0afa96c0f94 100644
--- a/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
+++ b/processing/src/main/java/org/apache/druid/math/expr/ExprEval.java
@@ -690,12 +690,6 @@ public abstract class ExprEval<T>
return value;
}
- @Nullable
- public T valueOrDefault()
- {
- return value;
- }
-
void cacheStringValue(@Nullable String value)
{
stringValue = value;
@@ -824,15 +818,6 @@ public abstract class ExprEval<T>
return ExpressionType.DOUBLE;
}
- @Override
- public Number valueOrDefault()
- {
- if (value == null) {
- return null;
- }
- return value.doubleValue();
- }
-
@Override
public final boolean asBoolean()
{
@@ -843,7 +828,7 @@ public abstract class ExprEval<T>
@Override
public Object[] asArray()
{
- return value == null ? null : new
Object[]{valueOrDefault().doubleValue()};
+ return value == null ? null : new Object[]{value.doubleValue()};
}
@Override
@@ -907,15 +892,6 @@ public abstract class ExprEval<T>
return ExpressionType.LONG;
}
- @Override
- public Number valueOrDefault()
- {
- if (value == null) {
- return null;
- }
- return value.longValue();
- }
-
@Override
public final boolean asBoolean()
{
@@ -926,7 +902,7 @@ public abstract class ExprEval<T>
@Override
public Object[] asArray()
{
- return value == null ? null : new Object[]{valueOrDefault().longValue()};
+ return value == null ? null : new Object[]{value.longValue()};
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/math/expr/ExpressionPredicateIndexSupplier.java
b/processing/src/main/java/org/apache/druid/math/expr/ExpressionPredicateIndexSupplier.java
index 21ffd28fcec..a178a76a51b 100644
---
a/processing/src/main/java/org/apache/druid/math/expr/ExpressionPredicateIndexSupplier.java
+++
b/processing/src/main/java/org/apache/druid/math/expr/ExpressionPredicateIndexSupplier.java
@@ -209,7 +209,7 @@ public class ExpressionPredicateIndexSupplier implements
ColumnIndexSupplier
@Override
boolean nextMatches(@Nullable Object nextValue)
{
- final Object result = evalFunction.apply(nextValue).valueOrDefault();
+ final Object result = evalFunction.apply(nextValue).value();
return predicate.apply(result).matches(includeUnknown);
}
};
diff --git
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregator.java
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregator.java
index 5331943575a..c50b7d42e10 100644
---
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregator.java
+++
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregator.java
@@ -59,7 +59,7 @@ public class ExpressionLambdaAggregator implements Aggregator
}
}
final ExprEval<?> eval = lambda.eval(bindings);
- final int estimatedSize =
eval.type().getNullableStrategy().estimateSizeBytes(eval.valueOrDefault());
+ final int estimatedSize =
eval.type().getNullableStrategy().estimateSizeBytes(eval.value());
if (estimatedSize > maxSizeBytes) {
throw new ISE(
"Exceeded memory usage when aggregating type [%s], size [%s] is
larger than max [%s]",
@@ -76,7 +76,7 @@ public class ExpressionLambdaAggregator implements Aggregator
@Override
public Object get()
{
- return hasValue ? bindings.getAccumulator().valueOrDefault() : null;
+ return hasValue ? bindings.getAccumulator().value() : null;
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java
index 79db51d9b9c..3235d709eee 100644
---
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java
+++
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java
@@ -344,7 +344,7 @@ public class ExpressionLambdaAggregatorFactory extends
AggregatorFactory
// arbitrarily assign lhs and rhs to accumulator and aggregator name
inputs to re-use combine function
return combineExpression.get().eval(
combineBindings.get().withBinding(accumulatorId,
lhs).withBinding(name, rhs)
- ).valueOrDefault();
+ ).value();
}
@Override
@@ -360,7 +360,7 @@ public class ExpressionLambdaAggregatorFactory extends
AggregatorFactory
Expr finalizeExpr;
finalizeExpr = finalizeExpression.get();
if (finalizeExpr != null) {
- return
finalizeExpr.eval(finalizeBindings.get().withBinding(FINALIZE_IDENTIFIER,
object)).valueOrDefault();
+ return
finalizeExpr.eval(finalizeBindings.get().withBinding(FINALIZE_IDENTIFIER,
object)).value();
}
return object;
}
diff --git
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorInputBindings.java
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorInputBindings.java
index b84a8ad3d8a..36232ff0c47 100644
---
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorInputBindings.java
+++
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorInputBindings.java
@@ -53,7 +53,7 @@ public class ExpressionLambdaAggregatorInputBindings
implements Expr.ObjectBindi
public Object get(String name)
{
if (accumlatorIdentifier.equals(name)) {
- return accumulator.valueOrDefault();
+ return accumulator.value();
}
return inputBindings.get(name);
}
diff --git
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaBufferAggregator.java
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaBufferAggregator.java
index 3730649953b..5dc9a88d963 100644
---
a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaBufferAggregator.java
+++
b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaBufferAggregator.java
@@ -90,7 +90,7 @@ public class ExpressionLambdaBufferAggregator implements
BufferAggregator
if (isNullUnlessAggregated && (buf.get(position) & NOT_AGGREGATED_BIT) !=
0) {
return null;
}
- return ExprEval.deserialize(buf, position, maxSizeBytes, outputType,
false).valueOrDefault();
+ return ExprEval.deserialize(buf, position, maxSizeBytes, outputType,
false).value();
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
index f2b4e01d8d1..62d16b050af 100644
---
a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
+++
b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
@@ -42,6 +42,7 @@ import org.apache.druid.query.aggregation.PostAggregator;
import org.apache.druid.query.cache.CacheKeyBuilder;
import org.apache.druid.segment.ColumnInspector;
import org.apache.druid.segment.column.ColumnType;
+import org.apache.druid.segment.column.Types;
import org.apache.druid.segment.column.ValueType;
import org.apache.druid.segment.virtual.ExpressionSelectors;
@@ -196,6 +197,7 @@ public class ExpressionPostAggregator implements
PostAggregator
return comparator;
}
+ @Nullable
@Override
public Object compute(Map<String, Object> values)
{
@@ -212,20 +214,20 @@ public class ExpressionPostAggregator implements
PostAggregator
// from decoration
final ExprEval<?> eval =
parsed.get().eval(InputBindings.forMap(finalizedValues,
partialTypeInformation));
if (expressionType == null) {
- return eval.valueOrDefault();
+ return eval.value();
}
// outputType cannot be null if expressionType is not null
- if (outputType.is(ValueType.FLOAT) && !eval.isNumericNull()) {
+ if (Types.is(outputType, ValueType.FLOAT) && !eval.isNumericNull()) {
return (float) eval.asDouble();
}
if (eval.type().equals(expressionType)) {
- return eval.valueOrDefault();
+ return eval.value();
}
if (expressionType.is(ExprType.STRING) && eval.isArray()) {
return ExpressionSelectors.coerceEvalToObjectOrList(eval);
}
// coerce to expected type
- return eval.castTo(expressionType).valueOrDefault();
+ return eval.castTo(expressionType).value();
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/query/expression/ExprUtils.java
b/processing/src/main/java/org/apache/druid/query/expression/ExprUtils.java
index 86b76b58e14..5707783496a 100644
--- a/processing/src/main/java/org/apache/druid/query/expression/ExprUtils.java
+++ b/processing/src/main/java/org/apache/druid/query/expression/ExprUtils.java
@@ -78,7 +78,7 @@ public class ExprUtils
origin = null;
} else {
Chronology chronology = timeZone == null ?
ISOChronology.getInstanceUTC() : ISOChronology.getInstance(timeZone);
- final Object value = originArg.eval(bindings).valueOrDefault();
+ final Object value = originArg.eval(bindings).value();
origin = value != null ? new DateTime(value, chronology) : null;
}
diff --git
a/processing/src/main/java/org/apache/druid/query/filter/ArrayContainsElementFilter.java
b/processing/src/main/java/org/apache/druid/query/filter/ArrayContainsElementFilter.java
index 6e6a418167d..19c5dd8bfb5 100644
---
a/processing/src/main/java/org/apache/druid/query/filter/ArrayContainsElementFilter.java
+++
b/processing/src/main/java/org/apache/druid/query/filter/ArrayContainsElementFilter.java
@@ -234,7 +234,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
return elementIndexes.containsValue(elementMatchValueEval.value(),
elementMatchValueType);
}
- if (elementMatchValueEval.valueOrDefault() != null &&
selector.getColumnCapabilities(column) != null &&
!selector.getColumnCapabilities(column).isArray()) {
+ if (elementMatchValueEval.value() != null &&
selector.getColumnCapabilities(column) != null &&
!selector.getColumnCapabilities(column).isArray()) {
// column is not an array, behave like a normal equality filter
return EqualityFilter.getEqualityIndex(column, elementMatchValueEval,
elementMatchValueType, selector, predicateFactory);
}
@@ -257,7 +257,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
{
final ColumnCapabilities capabilities =
factory.getColumnCapabilities(column);
- if (elementMatchValueEval.valueOrDefault() != null &&
elementMatchValueType.isPrimitive() && (capabilities == null ||
capabilities.isPrimitive())) {
+ if (elementMatchValueEval.value() != null &&
elementMatchValueType.isPrimitive() && (capabilities == null ||
capabilities.isPrimitive())) {
return ColumnProcessors.makeVectorProcessor(
column,
VectorValueMatcherColumnProcessorFactory.instance(),
@@ -327,7 +327,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
this.elementMatchValue = elementMatchValue;
this.equalityPredicateFactory = new
EqualityFilter.EqualityPredicateFactory(elementMatchValue);
// if element match value is an array, scalar matches can never be true
- final Object matchVal = elementMatchValue.valueOrDefault();
+ final Object matchVal = elementMatchValue.value();
if (matchVal == null || (elementMatchValue.isArray() &&
elementMatchValue.asArray().length > 1)) {
this.stringPredicateSupplier =
DruidObjectPredicate::alwaysFalseWithNullUnknown;
this.longPredicateSupplier = () ->
DruidLongPredicate.ALWAYS_FALSE_WITH_NULL_UNKNOWN;
@@ -488,7 +488,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
@Override
public ValueMatcher makeDimensionProcessor(DimensionSelector selector,
boolean multiValue)
{
- if (matchValue.valueOrDefault() == null || matchValue.isArray()) {
+ if (matchValue.value() == null || matchValue.isArray()) {
return predicateMatcherFactory.makeDimensionProcessor(selector,
multiValue);
}
return super.makeDimensionProcessor(selector, multiValue);
@@ -497,7 +497,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
@Override
public ValueMatcher makeFloatProcessor(BaseFloatColumnValueSelector
selector)
{
- if (matchValue.valueOrDefault() == null || matchValue.isArray()) {
+ if (matchValue.value() == null || matchValue.isArray()) {
return predicateMatcherFactory.makeFloatProcessor(selector);
}
return super.makeFloatProcessor(selector);
@@ -506,7 +506,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
@Override
public ValueMatcher makeDoubleProcessor(BaseDoubleColumnValueSelector
selector)
{
- if (matchValue.valueOrDefault() == null || matchValue.isArray()) {
+ if (matchValue.value() == null || matchValue.isArray()) {
return predicateMatcherFactory.makeDoubleProcessor(selector);
}
return super.makeDoubleProcessor(selector);
@@ -515,7 +515,7 @@ public class ArrayContainsElementFilter extends
AbstractOptimizableDimFilter imp
@Override
public ValueMatcher makeLongProcessor(BaseLongColumnValueSelector selector)
{
- if (matchValue.valueOrDefault() == null || matchValue.isArray()) {
+ if (matchValue.value() == null || matchValue.isArray()) {
return predicateMatcherFactory.makeLongProcessor(selector);
}
return super.makeLongProcessor(selector);
diff --git
a/processing/src/main/java/org/apache/druid/query/filter/EqualityFilter.java
b/processing/src/main/java/org/apache/druid/query/filter/EqualityFilter.java
index f7b2dd1cdb9..c7a70f03c05 100644
--- a/processing/src/main/java/org/apache/druid/query/filter/EqualityFilter.java
+++ b/processing/src/main/java/org/apache/druid/query/filter/EqualityFilter.java
@@ -511,7 +511,7 @@ public class EqualityFilter extends
AbstractOptimizableDimFilter implements Filt
if (matchValue.type().equals(ExpressionType.NESTED_DATA)) {
return input -> input == null ? DruidPredicateMatch.UNKNOWN :
DruidPredicateMatch.of(Objects.equals(StructuredData.unwrap(input),
StructuredData.unwrap(matchValue.value())));
}
- return DruidObjectPredicate.equalTo(matchValue.valueOrDefault());
+ return DruidObjectPredicate.equalTo(matchValue.value());
});
}
diff --git
a/processing/src/main/java/org/apache/druid/segment/AutoTypeColumnIndexer.java
b/processing/src/main/java/org/apache/druid/segment/AutoTypeColumnIndexer.java
index 3f0a6171734..b20544bcc4b 100644
---
a/processing/src/main/java/org/apache/druid/segment/AutoTypeColumnIndexer.java
+++
b/processing/src/main/java/org/apache/druid/segment/AutoTypeColumnIndexer.java
@@ -641,7 +641,7 @@ public class AutoTypeColumnIndexer implements
DimensionIndexer<StructuredData, S
if (0 <= dimIndex && dimIndex < dims.length) {
final StructuredData data = (StructuredData) dims[dimIndex];
if (data != null) {
- final Object o =
ExprEval.bestEffortOf(data.getValue()).valueOrDefault();
+ final Object o = ExprEval.bestEffortOf(data.getValue()).value();
return o;
}
}
diff --git
a/processing/src/main/java/org/apache/druid/segment/filter/ExpressionFilter.java
b/processing/src/main/java/org/apache/druid/segment/filter/ExpressionFilter.java
index d4f52fa8ead..7f17f28aa00 100644
---
a/processing/src/main/java/org/apache/druid/segment/filter/ExpressionFilter.java
+++
b/processing/src/main/java/org/apache/druid/segment/filter/ExpressionFilter.java
@@ -97,7 +97,7 @@ public class ExpressionFilter implements Filter
// evaluate the expression, just in case it does actually match nulls
final ExprEval<?> constantEval =
theExpr.eval(InputBindings.nilBindings());
final ConstantMatcherType constantMatcherType;
- if (constantEval.valueOrDefault() == null) {
+ if (constantEval.value() == null) {
constantMatcherType = ConstantMatcherType.ALL_UNKNOWN;
} else {
constantMatcherType = constantEval.asBoolean() ?
ConstantMatcherType.ALL_TRUE : ConstantMatcherType.ALL_FALSE;
@@ -200,7 +200,7 @@ public class ExpressionFilter implements Filter
if (details.getRequiredBindings().isEmpty()) {
// Constant expression.
final ExprEval<?> eval = expr.get().eval(InputBindings.nilBindings());
- if (eval.valueOrDefault() == null) {
+ if (eval.value() == null) {
return new AllUnknownBitmapColumnIndex(selector);
}
if (eval.asBoolean()) {
diff --git
a/processing/src/main/java/org/apache/druid/segment/transform/ExpressionTransform.java
b/processing/src/main/java/org/apache/druid/segment/transform/ExpressionTransform.java
index cd4565514d8..de3cb7c8697 100644
---
a/processing/src/main/java/org/apache/druid/segment/transform/ExpressionTransform.java
+++
b/processing/src/main/java/org/apache/druid/segment/transform/ExpressionTransform.java
@@ -99,7 +99,7 @@ public class ExpressionTransform implements Transform
public Object eval(final Row row)
{
try {
- return expr.eval(InputBindings.forRow(row)).valueOrDefault();
+ return expr.eval(InputBindings.forRow(row)).value();
}
catch (Throwable t) {
throw new ISE(t, "Could not transform value for %s reason: %s", name,
t.getMessage());
@@ -110,7 +110,7 @@ public class ExpressionTransform implements Transform
public List<String> evalDimension(Row row)
{
try {
- return
Rows.objectToStrings(expr.eval(InputBindings.forRow(row)).valueOrDefault());
+ return
Rows.objectToStrings(expr.eval(InputBindings.forRow(row)).value());
}
catch (Throwable t) {
throw new ISE(t, "Could not transform dimension value for %s reason:
%s", name, t.getMessage());
diff --git
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionDeferredGroupByVectorColumnSelector.java
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionDeferredGroupByVectorColumnSelector.java
index 1f42002758f..2963de0b027 100644
---
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionDeferredGroupByVectorColumnSelector.java
+++
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionDeferredGroupByVectorColumnSelector.java
@@ -120,7 +120,7 @@ public class ExpressionDeferredGroupByVectorColumnSelector
implements GroupByVec
keyOffset += subSelector.getGroupingKeySize();
}
- resultRow.getArray()[resultRowPosition] =
expr.eval(tmpResultRowBindings).valueOrDefault();
+ resultRow.getArray()[resultRowPosition] =
expr.eval(tmpResultRowBindings).value();
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionSelectors.java
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionSelectors.java
index fd7d9db2961..d037a24bbd0 100644
---
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionSelectors.java
+++
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionSelectors.java
@@ -471,11 +471,11 @@ public class ExpressionSelectors
}
return Arrays.stream(asArray).collect(Collectors.toList());
}
- return eval.valueOrDefault();
+ return eval.value();
}
/**
- * Wraps a {@link ColumnValueSelector<ExprEval>} and calls {@link
ExprEval#valueOrDefault()} on the output of
+ * Wraps a {@link ColumnValueSelector<ExprEval>} and calls {@link
ExprEval#value()} on the output of
* {@link #baseSelector#getObject()} in {@link #getObject()}.
*/
private static class EvalUnwrappingColumnValueSelector implements
ColumnValueSelector
@@ -517,7 +517,7 @@ public class ExpressionSelectors
{
// No need for null check on getObject() since baseSelector impls will
never return null.
ExprEval eval = baseSelector.getObject();
- return eval.valueOrDefault();
+ return eval.value();
}
@Override
diff --git
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionVectorSelectors.java
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionVectorSelectors.java
index cb103f424f4..92ef11bba31 100644
---
a/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionVectorSelectors.java
+++
b/processing/src/main/java/org/apache/druid/segment/virtual/ExpressionVectorSelectors.java
@@ -87,7 +87,7 @@ public class ExpressionVectorSelectors
if (plan.isConstant()) {
return ConstantVectorSelectors.vectorValueSelector(
factory.getReadableVectorInspector(),
- (Number)
plan.getExpression().eval(InputBindings.nilBindings()).valueOrDefault()
+ (Number)
plan.getExpression().eval(InputBindings.nilBindings()).value()
);
}
final Expr.VectorInputBinding bindings =
createVectorBindings(plan.getAnalysis(), factory);
@@ -114,7 +114,7 @@ public class ExpressionVectorSelectors
}
return ConstantVectorSelectors.vectorObjectSelector(
factory.getReadableVectorInspector(),
- eval.valueOrDefault()
+ eval.value()
);
}
diff --git a/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
b/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
index e05f98c4540..047c73ffe2e 100644
--- a/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
+++ b/processing/src/test/java/org/apache/druid/math/expr/EvalTest.java
@@ -917,13 +917,13 @@ public class EvalTest extends InitializedNullHandlingTest
assertEquals(1L, eval("null || 1", bindings).value());
assertEquals(1L, eval("1 || null", bindings).value());
- assertNull(eval("null || 0", bindings).valueOrDefault());
- assertNull(eval("0 || null", bindings).valueOrDefault());
- assertNull(eval("null || null", bindings).valueOrDefault());
+ assertNull(eval("null || 0", bindings).value());
+ assertNull(eval("0 || null", bindings).value());
+ assertNull(eval("null || null", bindings).value());
- assertNull(eval("null && 1", bindings).valueOrDefault());
- assertNull(eval("1 && null", bindings).valueOrDefault());
- assertNull(eval("null && null", bindings).valueOrDefault());
+ assertNull(eval("null && 1", bindings).value());
+ assertNull(eval("1 && null", bindings).value());
+ assertNull(eval("null && null", bindings).value());
// if either side is false, output is false in both modes
assertEquals(0L, eval("null && 0", bindings).value());
assertEquals(0L, eval("0 && null", bindings).value());
@@ -1028,14 +1028,14 @@ public class EvalTest extends
InitializedNullHandlingTest
}
@Test
- public void testValueOrDefault()
+ public void testvalue()
{
ExprEval<?> longNull = ExprEval.ofLong(null);
ExprEval<?> doubleNull = ExprEval.ofDouble(null);
Assert.assertTrue(longNull.isNumericNull());
Assert.assertTrue(doubleNull.isNumericNull());
- Assert.assertNull(null, longNull.valueOrDefault());
- Assert.assertNull(null, doubleNull.valueOrDefault());
+ Assert.assertNull(null, longNull.value());
+ Assert.assertNull(null, doubleNull.value());
}
@Test
diff --git
a/processing/src/test/java/org/apache/druid/math/expr/VectorExprResultConsistencyTest.java
b/processing/src/test/java/org/apache/druid/math/expr/VectorExprResultConsistencyTest.java
index 2af34b87428..11580eb9f5b 100644
---
a/processing/src/test/java/org/apache/druid/math/expr/VectorExprResultConsistencyTest.java
+++
b/processing/src/test/java/org/apache/druid/math/expr/VectorExprResultConsistencyTest.java
@@ -484,13 +484,13 @@ public class VectorExprResultConsistencyTest extends
InitializedNullHandlingTest
if (outputType != null && outputType.isArray()) {
Assert.assertArrayEquals(
StringUtils.format("Values do not match for row %s for
expression %s", i, expr),
- (Object[]) eval.valueOrDefault(),
+ (Object[]) eval.value(),
(Object[]) vectorVals[i]
);
} else {
Assert.assertEquals(
StringUtils.format("Values do not match for row %s for
expression %s", i, expr),
- eval.valueOrDefault(),
+ eval.value(),
vectorVals[i]
);
}
@@ -541,13 +541,13 @@ public class VectorExprResultConsistencyTest extends
InitializedNullHandlingTest
if (outputType != null && outputType.isArray()) {
Assert.assertArrayEquals(
StringUtils.format("Values do not match for row %s for
expression %s", i, expr),
- (Object[]) eval.valueOrDefault(),
+ (Object[]) eval.value(),
(Object[]) vectorVals[i]
);
} else {
Assert.assertEquals(
StringUtils.format("Values do not match for row %s for
expression %s", i, expr),
- eval.valueOrDefault(),
+ eval.value(),
vectorVals[i]
);
}
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayContainsOperatorConversion.java
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayContainsOperatorConversion.java
index 4189cb9e6ff..df729a01142 100644
---
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayContainsOperatorConversion.java
+++
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayContainsOperatorConversion.java
@@ -193,7 +193,7 @@ public class ArrayContainsOperatorConversion extends
BaseExpressionDimFilterOper
return new ArrayContainsElementFilter(
leftExpr.getSimpleExtraction().getColumn(),
ExpressionType.toColumnType(exprEval.type()),
- exprEval.valueOrDefault(),
+ exprEval.value(),
null
);
}
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayOverlapOperatorConversion.java
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayOverlapOperatorConversion.java
index 55385eca40f..21d9a06b117 100644
---
a/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayOverlapOperatorConversion.java
+++
b/sql/src/main/java/org/apache/druid/sql/calcite/expression/builtin/ArrayOverlapOperatorConversion.java
@@ -204,7 +204,7 @@ public class ArrayOverlapOperatorConversion extends
BaseExpressionDimFilterOpera
return new ArrayContainsElementFilter(
leftExpr.getSimpleExtraction().getColumn(),
ExpressionType.toColumnType(exprEval.type()),
- exprEval.valueOrDefault(),
+ exprEval.value(),
null
);
}
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/filtration/Ranges.java
b/sql/src/main/java/org/apache/druid/sql/calcite/filtration/Ranges.java
index 778be044713..88200e0a205 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/filtration/Ranges.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/filtration/Ranges.java
@@ -96,12 +96,10 @@ public class Ranges
{
final ExpressionType exprType =
ExpressionType.fromColumnType(newMatchValueType);
final RangeValue upper = range.getUpper() != null
- ? new RangeValue(ExprEval.ofType(exprType,
range.getUpper())
- .valueOrDefault(),
newMatchValueType)
+ ? new RangeValue(ExprEval.ofType(exprType,
range.getUpper()).value(), newMatchValueType)
: null;
final RangeValue lower = range.getLower() != null
- ? new RangeValue(ExprEval.ofType(exprType,
range.getLower())
- .valueOrDefault(),
newMatchValueType)
+ ? new RangeValue(ExprEval.ofType(exprType,
range.getLower()).value(), newMatchValueType)
: null;
if (lower == null) {
@@ -236,7 +234,7 @@ public class Ranges
return value;
} else {
final ExpressionType expressionType =
ExpressionType.fromColumnType(columnType);
- return ExprEval.ofType(expressionType, value).valueOrDefault();
+ return ExprEval.ofType(expressionType, value).value();
}
} else {
return value;
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java
index 1f73834fdb2..6edb94a0518 100644
---
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java
+++
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidRexExecutor.java
@@ -84,7 +84,7 @@ public class DruidRexExecutor implements RexExecutor
final RexNode literal;
if (sqlTypeName == SqlTypeName.BOOLEAN) {
- if (exprResult.valueOrDefault() == null) {
+ if (exprResult.value() == null) {
literal = rexBuilder.makeNullLiteral(constExp.getType());
} else {
literal = rexBuilder.makeLiteral(exprResult.asBoolean(),
constExp.getType(), true);
@@ -212,7 +212,7 @@ public class DruidRexExecutor implements RexExecutor
// column selector anyway
literal = constExp;
} else {
- literal = rexBuilder.makeLiteral(exprResult.valueOrDefault(),
constExp.getType(), true);
+ literal = rexBuilder.makeLiteral(exprResult.value(),
constExp.getType(), true);
}
}
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/rule/DruidUnnestRule.java
b/sql/src/main/java/org/apache/druid/sql/calcite/rule/DruidUnnestRule.java
index a5f3453f19a..25001186145 100644
--- a/sql/src/main/java/org/apache/druid/sql/calcite/rule/DruidUnnestRule.java
+++ b/sql/src/main/java/org/apache/druid/sql/calcite/rule/DruidUnnestRule.java
@@ -166,7 +166,7 @@ public class DruidUnnestRule extends RelOptRule
}
}
} else {
- rows.add(new Object[]{eval.valueOrDefault()});
+ rows.add(new Object[]{eval.value()});
}
// Transform to inline datasource.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]