Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions core/src/main/java/org/apache/druid/math/expr/ApplyFunction.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.apache.druid.java.util.common.IAE;
import org.apache.druid.java.util.common.RE;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.segment.column.ValueType;

import javax.annotation.Nullable;
import java.util.ArrayList;
Expand Down Expand Up @@ -56,7 +57,7 @@ public interface ApplyFunction
ExprEval apply(LambdaExpr lambdaExpr, List<Expr> argsExpr, Expr.ObjectBinding bindings);

/**
* Get list of input arguments which must evaluate to an array {@link ExprType}
* Get list of input arguments which must evaluate to an array {@link ValueType}
*/
Set<Expr> getArrayInputs(List<Expr> args);

Expand Down Expand Up @@ -97,7 +98,7 @@ ExprEval applyMap(LambdaExpr expr, IndexableMapLambdaObjectBinding bindings)
Long[] longsOut = null;
Double[] doublesOut = null;

ExprType elementType = null;
ValueType elementType = null;
for (int i = 0; i < length; i++) {

ExprEval evaluated = expr.eval(bindings.withIndex(i));
Expand Down Expand Up @@ -274,7 +275,7 @@ ExprEval applyFold(LambdaExpr lambdaExpr, Object accumulator, IndexableFoldLambd
accumulator = evaluated.value();
}
if (accumulator instanceof Boolean) {
return ExprEval.of((boolean) accumulator, ExprType.LONG);
return ExprEval.ofLongBoolean((boolean) accumulator);
}
return ExprEval.bestEffortOf(accumulator);
}
Expand Down Expand Up @@ -501,7 +502,7 @@ public ExprEval apply(LambdaExpr lambdaExpr, List<Expr> argsExpr, Expr.ObjectBin

final Object[] array = arrayEval.asArray();
if (array == null) {
return ExprEval.of(false, ExprType.LONG);
return ExprEval.ofLongBoolean(false);
}

SettableLambdaBinding lambdaBinding = new SettableLambdaBinding(lambdaExpr, bindings);
Expand Down Expand Up @@ -550,7 +551,7 @@ public ExprEval match(Object[] values, LambdaExpr expr, SettableLambdaBinding bi
{
boolean anyMatch = Arrays.stream(values)
.anyMatch(o -> expr.eval(bindings.withBinding(expr.getIdentifier(), o)).asBoolean());
return ExprEval.of(anyMatch, ExprType.LONG);
return ExprEval.ofLongBoolean(anyMatch);
}
}

Expand All @@ -573,7 +574,7 @@ public ExprEval match(Object[] values, LambdaExpr expr, SettableLambdaBinding bi
{
boolean allMatch = Arrays.stream(values)
.allMatch(o -> expr.eval(bindings.withBinding(expr.getIdentifier(), o)).asBoolean());
return ExprEval.of(allMatch, ExprType.LONG);
return ExprEval.ofLongBoolean(allMatch);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(Comparators.<String>naturalNullsFirst().compare(left, right) < 0, ExprType.LONG);
return ExprEval.ofLongBoolean(Comparators.<String>naturalNullsFirst().compare(left, right) < 0);
}

@Override
Expand Down Expand Up @@ -75,7 +75,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(Comparators.<String>naturalNullsFirst().compare(left, right) <= 0, ExprType.LONG);
return ExprEval.ofLongBoolean(Comparators.<String>naturalNullsFirst().compare(left, right) <= 0);
}

@Override
Expand Down Expand Up @@ -108,7 +108,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(Comparators.<String>naturalNullsFirst().compare(left, right) > 0, ExprType.LONG);
return ExprEval.ofLongBoolean(Comparators.<String>naturalNullsFirst().compare(left, right) > 0);
}

@Override
Expand Down Expand Up @@ -141,7 +141,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(Comparators.<String>naturalNullsFirst().compare(left, right) >= 0, ExprType.LONG);
return ExprEval.ofLongBoolean(Comparators.<String>naturalNullsFirst().compare(left, right) >= 0);
}

@Override
Expand Down Expand Up @@ -174,7 +174,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(Objects.equals(left, right), ExprType.LONG);
return ExprEval.ofLongBoolean(Objects.equals(left, right));
}

@Override
Expand Down Expand Up @@ -206,7 +206,7 @@ protected BinaryOpExprBase copy(Expr left, Expr right)
@Override
protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
return ExprEval.of(!Objects.equals(left, right), ExprType.LONG);
return ExprEval.ofLongBoolean(!Objects.equals(left, right));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.google.common.collect.ImmutableSet;
import org.apache.druid.common.config.NullHandling;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.segment.column.ValueType;

import javax.annotation.Nullable;
import java.util.Objects;
Expand Down Expand Up @@ -132,9 +133,9 @@ public ExprEval eval(ObjectBinding bindings)
return ExprEval.of(null);
}

if (leftVal.type() == ExprType.STRING && rightVal.type() == ExprType.STRING) {
if (leftVal.type() == ValueType.STRING && rightVal.type() == ValueType.STRING) {
return evalString(leftVal.asString(), rightVal.asString());
} else if (leftVal.type() == ExprType.LONG && rightVal.type() == ExprType.LONG) {
} else if (leftVal.type() == ValueType.LONG && rightVal.type() == ValueType.LONG) {
if (NullHandling.sqlCompatible() && (leftVal.isNumericNull() || rightVal.isNumericNull())) {
return ExprEval.of(null);
}
Expand All @@ -149,7 +150,7 @@ public ExprEval eval(ObjectBinding bindings)

protected ExprEval evalString(@Nullable String left, @Nullable String right)
{
throw new IllegalArgumentException("unsupported type " + ExprType.STRING);
throw new IllegalArgumentException("unsupported type " + ValueType.STRING);
}

protected abstract long evalLong(long left, long right);
Expand Down
53 changes: 31 additions & 22 deletions core/src/main/java/org/apache/druid/math/expr/ExprEval.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@
import org.apache.druid.common.config.NullHandling;
import org.apache.druid.common.guava.GuavaUtils;
import org.apache.druid.java.util.common.IAE;
import org.apache.druid.segment.column.ValueType;

import javax.annotation.Nullable;
import java.util.Arrays;

/**
* Generic result holder for evaluated {@link Expr} containing the value and {@link ExprType} of the value to allow
* Generic result holder for evaluated {@link Expr} containing the value and {@link ValueType} of the value to allow
*/
public abstract class ExprEval<T>
{
Expand Down Expand Up @@ -75,7 +76,7 @@ public static ExprEval ofStringArray(@Nullable String[] stringValue)
return new StringArrayExprEval(stringValue);
}

public static ExprEval of(boolean value, ExprType type)
public static ExprEval of(boolean value, ValueType type)
{
switch (type) {
case DOUBLE:
Expand All @@ -89,6 +90,11 @@ public static ExprEval of(boolean value, ExprType type)
}
}

public static ExprEval ofLongBoolean(boolean value)
{
return ExprEval.of(Evals.asLong(value));
}

public static ExprEval bestEffortOf(@Nullable Object val)
{
if (val instanceof ExprEval) {
Expand Down Expand Up @@ -129,7 +135,10 @@ private ExprEval(@Nullable T value)
this.value = value;
}

public abstract ExprType type();
/**
* Get the type of this evaluated {@link Expr} result.
*/
public abstract ValueType type();

@Nullable
public T value()
Expand Down Expand Up @@ -201,7 +210,7 @@ public boolean isArray()
@Nullable
public abstract Double[] asDoubleArray();

public abstract ExprEval castTo(ExprType castTo);
public abstract ExprEval castTo(ValueType castTo);

public abstract Expr toExpr();

Expand Down Expand Up @@ -266,9 +275,9 @@ private DoubleExprEval(@Nullable Number value)
}

@Override
public final ExprType type()
public final ValueType type()
{
return ExprType.DOUBLE;
return ValueType.DOUBLE;
}

@Override
Expand All @@ -285,7 +294,7 @@ public Object[] asArray()
}

@Override
public final ExprEval castTo(ExprType castTo)
public final ExprEval castTo(ValueType castTo)
{
switch (castTo) {
case DOUBLE:
Expand Down Expand Up @@ -326,9 +335,9 @@ private LongExprEval(@Nullable Number value)
}

@Override
public final ExprType type()
public final ValueType type()
{
return ExprType.LONG;
return ValueType.LONG;
}

@Override
Expand All @@ -352,7 +361,7 @@ public Long[] asLongArray()
}

@Override
public final ExprEval castTo(ExprType castTo)
public final ExprEval castTo(ValueType castTo)
{
switch (castTo) {
case DOUBLE:
Expand Down Expand Up @@ -408,9 +417,9 @@ private StringExprEval(@Nullable String value)
}

@Override
public final ExprType type()
public final ValueType type()
{
return ExprType.STRING;
return ValueType.STRING;
}

@Override
Expand Down Expand Up @@ -552,7 +561,7 @@ public Double[] asDoubleArray()
}

@Override
public final ExprEval castTo(ExprType castTo)
public final ExprEval castTo(ValueType castTo)
{
switch (castTo) {
case DOUBLE:
Expand Down Expand Up @@ -658,9 +667,9 @@ private LongArrayExprEval(@Nullable Long[] value)
}

@Override
public ExprType type()
public ValueType type()
{
return ExprType.LONG_ARRAY;
return ValueType.LONG_ARRAY;
}

@Nullable
Expand All @@ -685,7 +694,7 @@ public Double[] asDoubleArray()
}

@Override
public ExprEval castTo(ExprType castTo)
public ExprEval castTo(ValueType castTo)
{
if (value == null) {
return StringExprEval.OF_NULL;
Expand Down Expand Up @@ -717,9 +726,9 @@ private DoubleArrayExprEval(@Nullable Double[] value)
}

@Override
public ExprType type()
public ValueType type()
{
return ExprType.DOUBLE_ARRAY;
return ValueType.DOUBLE_ARRAY;
}

@Nullable
Expand All @@ -744,7 +753,7 @@ public Double[] asDoubleArray()
}

@Override
public ExprEval castTo(ExprType castTo)
public ExprEval castTo(ValueType castTo)
{
if (value == null) {
return StringExprEval.OF_NULL;
Expand Down Expand Up @@ -781,9 +790,9 @@ private StringArrayExprEval(@Nullable String[] value)
}

@Override
public ExprType type()
public ValueType type()
{
return ExprType.STRING_ARRAY;
return ValueType.STRING_ARRAY;
}

@Nullable
Expand Down Expand Up @@ -816,7 +825,7 @@ public Double[] asDoubleArray()
}

@Override
public ExprEval castTo(ExprType castTo)
public ExprEval castTo(ValueType castTo)
{
if (value == null) {
return StringExprEval.OF_NULL;
Expand Down
33 changes: 0 additions & 33 deletions core/src/main/java/org/apache/druid/math/expr/ExprType.java

This file was deleted.

Loading