Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ default boolean canVectorize(Expr.InputBindingInspector inspector, Expr lambda,

/**
* Builds a 'vectorized' function expression processor, that can build vectorized processors for its input values
* using {@link Expr#buildVectorized}, for use in vectorized query engines.
* using {@link Expr#asVectorProcessor}, for use in vectorized query engines.
*
* @see Expr#buildVectorized(Expr.VectorInputBindingInspector)
* @see Expr#asVectorProcessor(Expr.VectorInputBindingInspector)
* @see Function#asVectorProcessor(Expr.VectorInputBindingInspector, List)
*/
default <T> ExprVectorProcessor<T> asVectorProcessor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.lessThan(inspector, left, right);
}
Expand Down Expand Up @@ -116,7 +116,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.lessThanOrEqual(inspector, left, right);
}
Expand Down Expand Up @@ -162,7 +162,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.greaterThan(inspector, left, right);
}
Expand Down Expand Up @@ -208,7 +208,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.greaterThanOrEqual(inspector, left, right);
}
Expand Down Expand Up @@ -253,7 +253,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.equal(inspector, left, right);
}
Expand Down Expand Up @@ -298,7 +298,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorComparisonProcessors.notEqual(inspector, left, right);
}
Expand Down Expand Up @@ -331,7 +331,9 @@ public ExprEval eval(ObjectBinding bindings)
return ExprEval.ofLongBoolean(false);
}
ExprEval rightVal;
if (NullHandling.sqlCompatible() || Types.is(leftVal.type(), ExprType.STRING)) {
// null values can (but not always) appear as string typed
// so type isn't necessarily string unless value is non-null
if (NullHandling.sqlCompatible() || (Types.is(leftVal.type(), ExprType.STRING))) {
// true/null, null/true, null/null -> null
// false/null, null/false -> false
if (leftVal.value() == null) {
Expand Down Expand Up @@ -362,7 +364,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.and(inspector, left, right);
}
Expand Down Expand Up @@ -405,7 +407,9 @@ public ExprEval eval(ObjectBinding bindings)
}

final ExprEval rightVal;
if (NullHandling.sqlCompatible() || Types.is(leftVal.type(), ExprType.STRING)) {
// null values can (but not always) appear as string typed
// so type isn't necessarily string unless value is non-null
if (NullHandling.sqlCompatible() || (Types.is(leftVal.type(), ExprType.STRING))) {
// true/null, null/true -> true
// false/null, null/false, null/null -> null
if (leftVal.value() == null) {
Expand Down Expand Up @@ -438,7 +442,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.or(inspector, left, right);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
ExpressionType type = ExpressionTypeConversion.operator(
left.getOutputType(inspector),
Expand Down Expand Up @@ -116,7 +116,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorMathProcessors.minus(inspector, left, right);
}
Expand Down Expand Up @@ -155,7 +155,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorMathProcessors.multiply(inspector, left, right);
}
Expand Down Expand Up @@ -194,7 +194,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorMathProcessors.divide(inspector, left, right);
}
Expand Down Expand Up @@ -233,7 +233,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorMathProcessors.power(inspector, left, right);
}
Expand Down Expand Up @@ -272,7 +272,7 @@ public boolean canVectorize(InputBindingInspector inspector)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorMathProcessors.modulo(inspector, left, right);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ public ExprEval eval(ObjectBinding bindings)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.constant(value, inspector.getMaxVectorSize());
}
Expand Down Expand Up @@ -214,7 +214,7 @@ public ExprEval eval(ObjectBinding bindings)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.constant((Long) null, inspector.getMaxVectorSize());
}
Expand Down Expand Up @@ -258,7 +258,7 @@ public ExprEval eval(ObjectBinding bindings)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.constant(value, inspector.getMaxVectorSize());
}
Expand Down Expand Up @@ -297,7 +297,7 @@ public ExprEval eval(ObjectBinding bindings)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.constant((Double) null, inspector.getMaxVectorSize());
}
Expand Down Expand Up @@ -341,7 +341,7 @@ public ExprEval eval(ObjectBinding bindings)
}

@Override
public <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
public <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
return VectorProcessors.constant(value, inspector.getMaxVectorSize());
}
Expand Down
6 changes: 3 additions & 3 deletions processing/src/main/java/org/apache/druid/math/expr/Expr.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ default ExpressionType getOutputType(InputBindingInspector inspector)

/**
* Check if an expression can be 'vectorized', for a given set of inputs. If this method returns true,
* {@link #buildVectorized} is expected to produce a {@link ExprVectorProcessor} which can evaluate values in batches
* {@link #asVectorProcessor} is expected to produce a {@link ExprVectorProcessor} which can evaluate values in batches
* to use with vectorized query engines.
*
* @param inspector
Expand All @@ -180,7 +180,7 @@ default boolean canVectorize(InputBindingInspector inspector)
*
* @param inspector
*/
default <T> ExprVectorProcessor<T> buildVectorized(VectorInputBindingInspector inspector)
default <T> ExprVectorProcessor<T> asVectorProcessor(VectorInputBindingInspector inspector)
{
throw Exprs.cannotVectorize(this);
}
Expand Down Expand Up @@ -345,7 +345,7 @@ default boolean canVectorize(Expr... args)
}

/**
* {@link InputBindingInspector} + vectorizations stuff for {@link #buildVectorized}
* {@link InputBindingInspector} + vectorizations stuff for {@link #asVectorProcessor}
*/
interface VectorInputBindingInspector extends InputBindingInspector
{
Expand Down
Loading