diff --git a/build-logic/src/main/resources/substrait-pmd.xml b/build-logic/src/main/resources/substrait-pmd.xml
index 5282c3a06..fd33f3eb9 100644
--- a/build-logic/src/main/resources/substrait-pmd.xml
+++ b/build-logic/src/main/resources/substrait-pmd.xml
@@ -12,6 +12,9 @@
+
+
+
diff --git a/core/src/main/java/io/substrait/dsl/SubstraitBuilder.java b/core/src/main/java/io/substrait/dsl/SubstraitBuilder.java
index 84af839d8..3a7035bc3 100644
--- a/core/src/main/java/io/substrait/dsl/SubstraitBuilder.java
+++ b/core/src/main/java/io/substrait/dsl/SubstraitBuilder.java
@@ -54,45 +54,46 @@ public class SubstraitBuilder {
private final SimpleExtension.ExtensionCollection extensions;
- public SubstraitBuilder(SimpleExtension.ExtensionCollection extensions) {
+ public SubstraitBuilder(final SimpleExtension.ExtensionCollection extensions) {
this.extensions = extensions;
}
// Relations
- public Aggregate.Measure measure(AggregateFunctionInvocation aggFn) {
+ public Aggregate.Measure measure(final AggregateFunctionInvocation aggFn) {
return Aggregate.Measure.builder().function(aggFn).build();
}
- public Aggregate.Measure measure(AggregateFunctionInvocation aggFn, Expression preMeasureFilter) {
+ public Aggregate.Measure measure(
+ final AggregateFunctionInvocation aggFn, final Expression preMeasureFilter) {
return Aggregate.Measure.builder().function(aggFn).preMeasureFilter(preMeasureFilter).build();
}
public Aggregate aggregate(
- Function groupingFn,
- Function> measuresFn,
- Rel input) {
- Function> groupingsFn =
+ final Function groupingFn,
+ final Function> measuresFn,
+ final Rel input) {
+ final Function> groupingsFn =
groupingFn.andThen(g -> Stream.of(g).collect(Collectors.toList()));
return aggregate(groupingsFn, measuresFn, Optional.empty(), input);
}
public Aggregate aggregate(
- Function groupingFn,
- Function> measuresFn,
- Rel.Remap remap,
- Rel input) {
- Function> groupingsFn =
+ final Function groupingFn,
+ final Function> measuresFn,
+ final Rel.Remap remap,
+ final Rel input) {
+ final Function> groupingsFn =
groupingFn.andThen(g -> Stream.of(g).collect(Collectors.toList()));
return aggregate(groupingsFn, measuresFn, Optional.of(remap), input);
}
private Aggregate aggregate(
- Function> groupingsFn,
- Function> measuresFn,
- Optional remap,
- Rel input) {
- List groupings = groupingsFn.apply(input);
- List measures = measuresFn.apply(input);
+ final Function> groupingsFn,
+ final Function> measuresFn,
+ final Optional remap,
+ final Rel input) {
+ final List groupings = groupingsFn.apply(input);
+ final List measures = measuresFn.apply(input);
return Aggregate.builder()
.groupings(groupings)
.measures(measures)
@@ -101,57 +102,64 @@ private Aggregate aggregate(
.build();
}
- public Cross cross(Rel left, Rel right) {
+ public Cross cross(final Rel left, final Rel right) {
return cross(left, right, Optional.empty());
}
- public Cross cross(Rel left, Rel right, Rel.Remap remap) {
+ public Cross cross(final Rel left, final Rel right, final Rel.Remap remap) {
return cross(left, right, Optional.of(remap));
}
- private Cross cross(Rel left, Rel right, Optional remap) {
+ private Cross cross(final Rel left, final Rel right, final Optional remap) {
return Cross.builder().left(left).right(right).remap(remap).build();
}
- public Fetch fetch(long offset, long count, Rel input) {
+ public Fetch fetch(final long offset, final long count, final Rel input) {
return fetch(offset, OptionalLong.of(count), Optional.empty(), input);
}
- public Fetch fetch(long offset, long count, Rel.Remap remap, Rel input) {
+ public Fetch fetch(final long offset, final long count, final Rel.Remap remap, final Rel input) {
return fetch(offset, OptionalLong.of(count), Optional.of(remap), input);
}
- public Fetch limit(long limit, Rel input) {
+ public Fetch limit(final long limit, final Rel input) {
return fetch(0, OptionalLong.of(limit), Optional.empty(), input);
}
- public Fetch limit(long limit, Rel.Remap remap, Rel input) {
+ public Fetch limit(final long limit, final Rel.Remap remap, final Rel input) {
return fetch(0, OptionalLong.of(limit), Optional.of(remap), input);
}
- public Fetch offset(long offset, Rel input) {
+ public Fetch offset(final long offset, final Rel input) {
return fetch(offset, OptionalLong.empty(), Optional.empty(), input);
}
- public Fetch offset(long offset, Rel.Remap remap, Rel input) {
+ public Fetch offset(final long offset, final Rel.Remap remap, final Rel input) {
return fetch(offset, OptionalLong.empty(), Optional.of(remap), input);
}
- private Fetch fetch(long offset, OptionalLong count, Optional remap, Rel input) {
+ private Fetch fetch(
+ final long offset,
+ final OptionalLong count,
+ final Optional remap,
+ final Rel input) {
return Fetch.builder().offset(offset).count(count).input(input).remap(remap).build();
}
- public Filter filter(Function conditionFn, Rel input) {
+ public Filter filter(final Function conditionFn, final Rel input) {
return filter(conditionFn, Optional.empty(), input);
}
- public Filter filter(Function conditionFn, Rel.Remap remap, Rel input) {
+ public Filter filter(
+ final Function conditionFn, final Rel.Remap remap, final Rel input) {
return filter(conditionFn, Optional.of(remap), input);
}
private Filter filter(
- Function conditionFn, Optional remap, Rel input) {
- Expression condition = conditionFn.apply(input);
+ final Function conditionFn,
+ final Optional remap,
+ final Rel input) {
+ final Expression condition = conditionFn.apply(input);
return Filter.builder().input(input).condition(condition).remap(remap).build();
}
@@ -159,7 +167,7 @@ public static final class JoinInput {
private final Rel left;
private final Rel right;
- JoinInput(Rel left, Rel right) {
+ JoinInput(final Rel left, final Rel right) {
this.left = left;
this.right = right;
}
@@ -173,36 +181,43 @@ public Rel right() {
}
}
- public Join innerJoin(Function conditionFn, Rel left, Rel right) {
+ public Join innerJoin(
+ final Function conditionFn, final Rel left, final Rel right) {
return join(conditionFn, Join.JoinType.INNER, left, right);
}
public Join innerJoin(
- Function conditionFn, Rel.Remap remap, Rel left, Rel right) {
+ final Function conditionFn,
+ final Rel.Remap remap,
+ final Rel left,
+ final Rel right) {
return join(conditionFn, Join.JoinType.INNER, remap, left, right);
}
public Join join(
- Function conditionFn, Join.JoinType joinType, Rel left, Rel right) {
+ final Function conditionFn,
+ final Join.JoinType joinType,
+ final Rel left,
+ final Rel right) {
return join(conditionFn, joinType, Optional.empty(), left, right);
}
public Join join(
- Function conditionFn,
- Join.JoinType joinType,
- Rel.Remap remap,
- Rel left,
- Rel right) {
+ final Function conditionFn,
+ final Join.JoinType joinType,
+ final Rel.Remap remap,
+ final Rel left,
+ final Rel right) {
return join(conditionFn, joinType, Optional.of(remap), left, right);
}
private Join join(
- Function conditionFn,
- Join.JoinType joinType,
- Optional remap,
- Rel left,
- Rel right) {
- Expression condition = conditionFn.apply(new JoinInput(left, right));
+ final Function conditionFn,
+ final Join.JoinType joinType,
+ final Optional remap,
+ final Rel left,
+ final Rel right) {
+ final Expression condition = conditionFn.apply(new JoinInput(left, right));
return Join.builder()
.left(left)
.right(right)
@@ -213,21 +228,21 @@ private Join join(
}
public HashJoin hashJoin(
- List leftKeys,
- List rightKeys,
- HashJoin.JoinType joinType,
- Rel left,
- Rel right) {
+ final List leftKeys,
+ final List rightKeys,
+ final HashJoin.JoinType joinType,
+ final Rel left,
+ final Rel right) {
return hashJoin(leftKeys, rightKeys, joinType, Optional.empty(), left, right);
}
public HashJoin hashJoin(
- List leftKeys,
- List rightKeys,
- HashJoin.JoinType joinType,
- Optional remap,
- Rel left,
- Rel right) {
+ final List leftKeys,
+ final List rightKeys,
+ final HashJoin.JoinType joinType,
+ final Optional remap,
+ final Rel left,
+ final Rel right) {
return HashJoin.builder()
.left(left)
.right(right)
@@ -241,21 +256,21 @@ public HashJoin hashJoin(
}
public MergeJoin mergeJoin(
- List leftKeys,
- List rightKeys,
- MergeJoin.JoinType joinType,
- Rel left,
- Rel right) {
+ final List leftKeys,
+ final List rightKeys,
+ final MergeJoin.JoinType joinType,
+ final Rel left,
+ final Rel right) {
return mergeJoin(leftKeys, rightKeys, joinType, Optional.empty(), left, right);
}
public MergeJoin mergeJoin(
- List leftKeys,
- List rightKeys,
- MergeJoin.JoinType joinType,
- Optional remap,
- Rel left,
- Rel right) {
+ final List leftKeys,
+ final List rightKeys,
+ final MergeJoin.JoinType joinType,
+ final Optional remap,
+ final Rel left,
+ final Rel right) {
return MergeJoin.builder()
.left(left)
.right(right)
@@ -269,20 +284,20 @@ public MergeJoin mergeJoin(
}
public NestedLoopJoin nestedLoopJoin(
- Function conditionFn,
- NestedLoopJoin.JoinType joinType,
- Rel left,
- Rel right) {
+ final Function conditionFn,
+ final NestedLoopJoin.JoinType joinType,
+ final Rel left,
+ final Rel right) {
return nestedLoopJoin(conditionFn, joinType, Optional.empty(), left, right);
}
private NestedLoopJoin nestedLoopJoin(
- Function conditionFn,
- NestedLoopJoin.JoinType joinType,
- Optional remap,
- Rel left,
- Rel right) {
- Expression condition = conditionFn.apply(new JoinInput(left, right));
+ final Function conditionFn,
+ final NestedLoopJoin.JoinType joinType,
+ final Optional remap,
+ final Rel left,
+ final Rel right) {
+ final Expression condition = conditionFn.apply(new JoinInput(left, right));
return NestedLoopJoin.builder()
.left(left)
.right(right)
@@ -293,25 +308,27 @@ private NestedLoopJoin nestedLoopJoin(
}
public NamedScan namedScan(
- Iterable tableName, Iterable columnNames, Iterable types) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final Iterable types) {
return namedScan(tableName, columnNames, types, Optional.empty());
}
public NamedScan namedScan(
- Iterable tableName,
- Iterable columnNames,
- Iterable types,
- Rel.Remap remap) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final Iterable types,
+ final Rel.Remap remap) {
return namedScan(tableName, columnNames, types, Optional.of(remap));
}
private NamedScan namedScan(
- Iterable tableName,
- Iterable columnNames,
- Iterable types,
- Optional remap) {
- Type.Struct struct = Type.Struct.builder().addAllFields(types).nullable(false).build();
- NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
+ final Iterable tableName,
+ final Iterable columnNames,
+ final Iterable types,
+ final Optional remap) {
+ final Type.Struct struct = Type.Struct.builder().addAllFields(types).nullable(false).build();
+ final NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
return NamedScan.builder().names(tableName).initialSchema(namedStruct).remap(remap).build();
}
@@ -322,37 +339,37 @@ public EmptyScan emptyScan() {
}
public NamedWrite namedWrite(
- Iterable tableName,
- Iterable columnNames,
- AbstractWriteRel.WriteOp op,
- AbstractWriteRel.CreateMode createMode,
- AbstractWriteRel.OutputMode outputMode,
- Rel input) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final AbstractWriteRel.WriteOp op,
+ final AbstractWriteRel.CreateMode createMode,
+ final AbstractWriteRel.OutputMode outputMode,
+ final Rel input) {
return namedWrite(tableName, columnNames, op, createMode, outputMode, input, Optional.empty());
}
public NamedWrite namedWrite(
- Iterable tableName,
- Iterable columnNames,
- AbstractWriteRel.WriteOp op,
- AbstractWriteRel.CreateMode createMode,
- AbstractWriteRel.OutputMode outputMode,
- Rel input,
- Rel.Remap remap) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final AbstractWriteRel.WriteOp op,
+ final AbstractWriteRel.CreateMode createMode,
+ final AbstractWriteRel.OutputMode outputMode,
+ final Rel input,
+ final Rel.Remap remap) {
return namedWrite(
tableName, columnNames, op, createMode, outputMode, input, Optional.of(remap));
}
private NamedWrite namedWrite(
- Iterable tableName,
- Iterable columnNames,
- AbstractWriteRel.WriteOp op,
- AbstractWriteRel.CreateMode createMode,
- AbstractWriteRel.OutputMode outputMode,
- Rel input,
- Optional remap) {
- Type.Struct struct = input.getRecordType();
- NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
+ final Iterable tableName,
+ final Iterable columnNames,
+ final AbstractWriteRel.WriteOp op,
+ final AbstractWriteRel.CreateMode createMode,
+ final AbstractWriteRel.OutputMode outputMode,
+ final Rel input,
+ final Optional remap) {
+ final Type.Struct struct = input.getRecordType();
+ final NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
return NamedWrite.builder()
.names(tableName)
.tableSchema(namedStruct)
@@ -365,39 +382,39 @@ private NamedWrite namedWrite(
}
public NamedUpdate namedUpdate(
- Iterable tableName,
- Iterable columnNames,
- List transformations,
- Expression condition,
- boolean nullable) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final List transformations,
+ final Expression condition,
+ final boolean nullable) {
return namedUpdate(
tableName, columnNames, transformations, condition, nullable, Optional.empty());
}
public NamedUpdate namedUpdate(
- Iterable tableName,
- Iterable columnNames,
- List transformations,
- Expression condition,
- boolean nullable,
- Rel.Remap remap) {
+ final Iterable tableName,
+ final Iterable columnNames,
+ final List transformations,
+ final Expression condition,
+ final boolean nullable,
+ final Rel.Remap remap) {
return namedUpdate(
tableName, columnNames, transformations, condition, nullable, Optional.of(remap));
}
private NamedUpdate namedUpdate(
- Iterable tableName,
- Iterable columnNames,
- List transformations,
- Expression condition,
- boolean nullable,
- Optional remap) {
- List types =
+ final Iterable tableName,
+ final Iterable columnNames,
+ final List transformations,
+ final Expression condition,
+ final boolean nullable,
+ final Optional remap) {
+ final List types =
transformations.stream()
.map(t -> t.getTransformation().getType())
.collect(Collectors.toList());
- Type.Struct struct = Type.Struct.builder().fields(types).nullable(nullable).build();
- NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
+ final Type.Struct struct = Type.Struct.builder().fields(types).nullable(nullable).build();
+ final NamedStruct namedStruct = NamedStruct.of(columnNames, struct);
return NamedUpdate.builder()
.names(tableName)
.tableSchema(namedStruct)
@@ -407,90 +424,97 @@ private NamedUpdate namedUpdate(
.build();
}
- public Project project(Function> expressionsFn, Rel input) {
+ public Project project(
+ final Function> expressionsFn, final Rel input) {
return project(expressionsFn, Optional.empty(), input);
}
public Project project(
- Function> expressionsFn, Rel.Remap remap, Rel input) {
+ final Function> expressionsFn,
+ final Rel.Remap remap,
+ final Rel input) {
return project(expressionsFn, Optional.of(remap), input);
}
private Project project(
- Function> expressionsFn,
- Optional remap,
- Rel input) {
- Iterable extends Expression> expressions = expressionsFn.apply(input);
+ final Function> expressionsFn,
+ final Optional remap,
+ final Rel input) {
+ final Iterable extends Expression> expressions = expressionsFn.apply(input);
return Project.builder().input(input).expressions(expressions).remap(remap).build();
}
- public Expand expand(Function> fieldsFn, Rel input) {
+ public Expand expand(
+ final Function> fieldsFn, final Rel input) {
return expand(fieldsFn, Optional.empty(), input);
}
public Expand expand(
- Function> fieldsFn, Rel.Remap remap, Rel input) {
+ final Function> fieldsFn,
+ final Rel.Remap remap,
+ final Rel input) {
return expand(fieldsFn, Optional.of(remap), input);
}
private Expand expand(
- Function> fieldsFn,
- Optional remap,
- Rel input) {
- Iterable extends Expand.ExpandField> fields = fieldsFn.apply(input);
+ final Function> fieldsFn,
+ final Optional remap,
+ final Rel input) {
+ final Iterable extends Expand.ExpandField> fields = fieldsFn.apply(input);
return Expand.builder().input(input).fields(fields).remap(remap).build();
}
- public Set set(Set.SetOp op, Rel... inputs) {
+ public Set set(final Set.SetOp op, final Rel... inputs) {
return set(op, Optional.empty(), inputs);
}
- public Set set(Set.SetOp op, Rel.Remap remap, Rel... inputs) {
+ public Set set(final Set.SetOp op, final Rel.Remap remap, final Rel... inputs) {
return set(op, Optional.of(remap), inputs);
}
- private Set set(Set.SetOp op, Optional remap, Rel... inputs) {
+ private Set set(final Set.SetOp op, final Optional remap, final Rel... inputs) {
return Set.builder().setOp(op).remap(remap).addAllInputs(Arrays.asList(inputs)).build();
}
- public Sort sort(Function> sortFieldFn, Rel input) {
+ public Sort sort(
+ final Function> sortFieldFn, final Rel input) {
return sort(sortFieldFn, Optional.empty(), input);
}
public Sort sort(
- Function> sortFieldFn,
- Rel.Remap remap,
- Rel input) {
+ final Function> sortFieldFn,
+ final Rel.Remap remap,
+ final Rel input) {
return sort(sortFieldFn, Optional.of(remap), input);
}
private Sort sort(
- Function> sortFieldFn,
- Optional remap,
- Rel input) {
- Iterable extends Expression.SortField> condition = sortFieldFn.apply(input);
+ final Function> sortFieldFn,
+ final Optional remap,
+ final Rel input) {
+ final Iterable extends Expression.SortField> condition = sortFieldFn.apply(input);
return Sort.builder().input(input).sortFields(condition).remap(remap).build();
}
// Expressions
- public Expression.BoolLiteral bool(boolean v) {
+ public Expression.BoolLiteral bool(final boolean v) {
return Expression.BoolLiteral.builder().value(v).build();
}
- public Expression.I32Literal i32(int v) {
+ public Expression.I32Literal i32(final int v) {
return Expression.I32Literal.builder().value(v).build();
}
- public Expression.FP64Literal fp64(double v) {
+ public Expression.FP64Literal fp64(final double v) {
return Expression.FP64Literal.builder().value(v).build();
}
- public Expression.StrLiteral str(String s) {
+ public Expression.StrLiteral str(final String s) {
return Expression.StrLiteral.builder().value(s).build();
}
- public Expression cast(Expression input, Type type) {
+ public Expression cast(final Expression input, final Type type) {
return Cast.builder()
.input(input)
.type(type)
@@ -498,46 +522,46 @@ public Expression cast(Expression input, Type type) {
.build();
}
- public FieldReference fieldReference(Rel input, int index) {
+ public FieldReference fieldReference(final Rel input, final int index) {
return FieldReference.newInputRelReference(index, input);
}
- public List fieldReferences(Rel input, int... indexes) {
+ public List fieldReferences(final Rel input, final int... indexes) {
return Arrays.stream(indexes)
.mapToObj(index -> fieldReference(input, index))
.collect(java.util.stream.Collectors.toList());
}
- public FieldReference fieldReference(List inputs, int index) {
+ public FieldReference fieldReference(final List inputs, final int index) {
return FieldReference.newInputRelReference(index, inputs);
}
- public List fieldReferences(List inputs, int... indexes) {
+ public List fieldReferences(final List inputs, final int... indexes) {
return Arrays.stream(indexes)
.mapToObj(index -> fieldReference(inputs, index))
.collect(java.util.stream.Collectors.toList());
}
- public IfThen ifThen(Iterable extends IfClause> ifClauses, Expression elseClause) {
+ public IfThen ifThen(final Iterable extends IfClause> ifClauses, final Expression elseClause) {
return IfThen.builder().addAllIfClauses(ifClauses).elseClause(elseClause).build();
}
- public IfClause ifClause(Expression condition, Expression then) {
+ public IfClause ifClause(final Expression condition, final Expression then) {
return IfClause.builder().condition(condition).then(then).build();
}
- public Expression singleOrList(Expression condition, Expression... options) {
+ public Expression singleOrList(final Expression condition, final Expression... options) {
return SingleOrList.builder().condition(condition).addOptions(options).build();
}
- public Expression.InPredicate inPredicate(Rel haystack, Expression... needles) {
+ public Expression.InPredicate inPredicate(final Rel haystack, final Expression... needles) {
return Expression.InPredicate.builder()
.addAllNeedles(Arrays.asList(needles))
.haystack(haystack)
.build();
}
- public List sortFields(Rel input, int... indexes) {
+ public List sortFields(final Rel input, final int... indexes) {
return Arrays.stream(indexes)
.mapToObj(
index ->
@@ -549,16 +573,18 @@ public List sortFields(Rel input, int... indexes) {
}
public Expression.SortField sortField(
- Expression expression, Expression.SortDirection sortDirection) {
+ final Expression expression, final Expression.SortDirection sortDirection) {
return Expression.SortField.builder().expr(expression).direction(sortDirection).build();
}
- public SwitchClause switchClause(Expression.Literal condition, Expression then) {
+ public SwitchClause switchClause(final Expression.Literal condition, final Expression then) {
return SwitchClause.builder().condition(condition).then(then).build();
}
public Switch switchExpression(
- Expression match, Iterable extends SwitchClause> clauses, Expression defaultClause) {
+ final Expression match,
+ final Iterable extends SwitchClause> clauses,
+ final Expression defaultClause) {
return Switch.builder()
.match(match)
.addAllSwitchClauses(clauses)
@@ -569,8 +595,8 @@ public Switch switchExpression(
// Aggregate Functions
public AggregateFunctionInvocation aggregateFn(
- String urn, String key, Type outputType, Expression... args) {
- SimpleExtension.AggregateFunctionVariant declaration =
+ final String urn, final String key, final Type outputType, final Expression... args) {
+ final SimpleExtension.AggregateFunctionVariant declaration =
extensions.getAggregateFunction(SimpleExtension.FunctionAnchor.of(urn, key));
return AggregateFunctionInvocation.builder()
.arguments(Arrays.stream(args).collect(java.util.stream.Collectors.toList()))
@@ -581,17 +607,17 @@ public AggregateFunctionInvocation aggregateFn(
.build();
}
- public Aggregate.Grouping grouping(Rel input, int... indexes) {
- List columns = fieldReferences(input, indexes);
+ public Aggregate.Grouping grouping(final Rel input, final int... indexes) {
+ final List columns = fieldReferences(input, indexes);
return Aggregate.Grouping.builder().addAllExpressions(columns).build();
}
- public Aggregate.Grouping grouping(Expression... expressions) {
+ public Aggregate.Grouping grouping(final Expression... expressions) {
return Aggregate.Grouping.builder().addExpressions(expressions).build();
}
- public Aggregate.Measure count(Rel input, int field) {
- SimpleExtension.AggregateFunctionVariant declaration =
+ public Aggregate.Measure count(final Rel input, final int field) {
+ final SimpleExtension.AggregateFunctionVariant declaration =
extensions.getAggregateFunction(
SimpleExtension.FunctionAnchor.of(
DefaultExtensionCatalog.FUNCTIONS_AGGREGATE_GENERIC, "count:any"));
@@ -624,11 +650,11 @@ public Measure countStar() {
.build());
}
- public Aggregate.Measure min(Rel input, int field) {
+ public Aggregate.Measure min(final Rel input, final int field) {
return min(fieldReference(input, field));
}
- public Aggregate.Measure min(Expression expr) {
+ public Aggregate.Measure min(final Expression expr) {
return singleArgumentArithmeticAggregate(
expr,
"min",
@@ -636,11 +662,11 @@ public Aggregate.Measure min(Expression expr) {
TypeCreator.asNullable(expr.getType()));
}
- public Aggregate.Measure max(Rel input, int field) {
+ public Aggregate.Measure max(final Rel input, final int field) {
return max(fieldReference(input, field));
}
- public Aggregate.Measure max(Expression expr) {
+ public Aggregate.Measure max(final Expression expr) {
return singleArgumentArithmeticAggregate(
expr,
"max",
@@ -648,11 +674,11 @@ public Aggregate.Measure max(Expression expr) {
TypeCreator.asNullable(expr.getType()));
}
- public Aggregate.Measure avg(Rel input, int field) {
+ public Aggregate.Measure avg(final Rel input, final int field) {
return avg(fieldReference(input, field));
}
- public Aggregate.Measure avg(Expression expr) {
+ public Aggregate.Measure avg(final Expression expr) {
return singleArgumentArithmeticAggregate(
expr,
"avg",
@@ -660,11 +686,11 @@ public Aggregate.Measure avg(Expression expr) {
TypeCreator.asNullable(expr.getType()));
}
- public Aggregate.Measure sum(Rel input, int field) {
+ public Aggregate.Measure sum(final Rel input, final int field) {
return sum(fieldReference(input, field));
}
- public Aggregate.Measure sum(Expression expr) {
+ public Aggregate.Measure sum(final Expression expr) {
return singleArgumentArithmeticAggregate(
expr,
"sum",
@@ -672,11 +698,11 @@ public Aggregate.Measure sum(Expression expr) {
TypeCreator.asNullable(expr.getType()));
}
- public Aggregate.Measure sum0(Rel input, int field) {
+ public Aggregate.Measure sum0(final Rel input, final int field) {
return sum(fieldReference(input, field));
}
- public Aggregate.Measure sum0(Expression expr) {
+ public Aggregate.Measure sum0(final Expression expr) {
return singleArgumentArithmeticAggregate(
expr,
"sum0",
@@ -685,9 +711,9 @@ public Aggregate.Measure sum0(Expression expr) {
}
private Aggregate.Measure singleArgumentArithmeticAggregate(
- Expression expr, String functionName, Type outputType) {
- String typeString = ToTypeString.apply(expr.getType());
- SimpleExtension.AggregateFunctionVariant declaration =
+ final Expression expr, final String functionName, final Type outputType) {
+ final String typeString = ToTypeString.apply(expr.getType());
+ final SimpleExtension.AggregateFunctionVariant declaration =
extensions.getAggregateFunction(
SimpleExtension.FunctionAnchor.of(
DefaultExtensionCatalog.FUNCTIONS_ARITHMETIC,
@@ -707,9 +733,9 @@ private Aggregate.Measure singleArgumentArithmeticAggregate(
// Scalar Functions
- public Expression.ScalarFunctionInvocation negate(Expression expr) {
+ public Expression.ScalarFunctionInvocation negate(final Expression expr) {
// output type of negate is the same as the input type
- Type outputType = expr.getType();
+ final Type outputType = expr.getType();
return scalarFn(
DefaultExtensionCatalog.FUNCTIONS_ARITHMETIC,
String.format("negate:%s", ToTypeString.apply(outputType)),
@@ -717,29 +743,31 @@ public Expression.ScalarFunctionInvocation negate(Expression expr) {
expr);
}
- public Expression.ScalarFunctionInvocation add(Expression left, Expression right) {
+ public Expression.ScalarFunctionInvocation add(final Expression left, final Expression right) {
return arithmeticFunction("add", left, right);
}
- public Expression.ScalarFunctionInvocation subtract(Expression left, Expression right) {
+ public Expression.ScalarFunctionInvocation subtract(
+ final Expression left, final Expression right) {
return arithmeticFunction("substract", left, right);
}
- public Expression.ScalarFunctionInvocation multiply(Expression left, Expression right) {
+ public Expression.ScalarFunctionInvocation multiply(
+ final Expression left, final Expression right) {
return arithmeticFunction("multiply", left, right);
}
- public Expression.ScalarFunctionInvocation divide(Expression left, Expression right) {
+ public Expression.ScalarFunctionInvocation divide(final Expression left, final Expression right) {
return arithmeticFunction("divide", left, right);
}
private Expression.ScalarFunctionInvocation arithmeticFunction(
- String fname, Expression left, Expression right) {
- String leftTypeStr = ToTypeString.apply(left.getType());
- String rightTypeStr = ToTypeString.apply(right.getType());
- String key = String.format("%s:%s_%s", fname, leftTypeStr, rightTypeStr);
+ final String fname, final Expression left, final Expression right) {
+ final String leftTypeStr = ToTypeString.apply(left.getType());
+ final String rightTypeStr = ToTypeString.apply(right.getType());
+ final String key = String.format("%s:%s_%s", fname, leftTypeStr, rightTypeStr);
- boolean isOutputNullable = left.getType().nullable() || right.getType().nullable();
+ final boolean isOutputNullable = left.getType().nullable() || right.getType().nullable();
Type outputType = left.getType();
outputType =
isOutputNullable
@@ -749,30 +777,30 @@ private Expression.ScalarFunctionInvocation arithmeticFunction(
return scalarFn(DefaultExtensionCatalog.FUNCTIONS_ARITHMETIC, key, outputType, left, right);
}
- public Expression.ScalarFunctionInvocation equal(Expression left, Expression right) {
+ public Expression.ScalarFunctionInvocation equal(final Expression left, final Expression right) {
return scalarFn(
DefaultExtensionCatalog.FUNCTIONS_COMPARISON, "equal:any_any", R.BOOLEAN, left, right);
}
- public Expression.ScalarFunctionInvocation and(Expression... args) {
+ public Expression.ScalarFunctionInvocation and(final Expression... args) {
// If any arg is nullable, the output of and is potentially nullable
// For example: false and null = null
- boolean isOutputNullable = Arrays.stream(args).anyMatch(a -> a.getType().nullable());
- Type outputType = isOutputNullable ? N.BOOLEAN : R.BOOLEAN;
+ final boolean isOutputNullable = Arrays.stream(args).anyMatch(a -> a.getType().nullable());
+ final Type outputType = isOutputNullable ? N.BOOLEAN : R.BOOLEAN;
return scalarFn(DefaultExtensionCatalog.FUNCTIONS_BOOLEAN, "and:bool", outputType, args);
}
- public Expression.ScalarFunctionInvocation or(Expression... args) {
+ public Expression.ScalarFunctionInvocation or(final Expression... args) {
// If any arg is nullable, the output of or is potentially nullable
// For example: false or null = null
- boolean isOutputNullable = Arrays.stream(args).anyMatch(a -> a.getType().nullable());
- Type outputType = isOutputNullable ? N.BOOLEAN : R.BOOLEAN;
+ final boolean isOutputNullable = Arrays.stream(args).anyMatch(a -> a.getType().nullable());
+ final Type outputType = isOutputNullable ? N.BOOLEAN : R.BOOLEAN;
return scalarFn(DefaultExtensionCatalog.FUNCTIONS_BOOLEAN, "or:bool", outputType, args);
}
public Expression.ScalarFunctionInvocation scalarFn(
- String urn, String key, Type outputType, FunctionArg... args) {
- SimpleExtension.ScalarFunctionVariant declaration =
+ final String urn, final String key, final Type outputType, final FunctionArg... args) {
+ final SimpleExtension.ScalarFunctionVariant declaration =
extensions.getScalarFunction(SimpleExtension.FunctionAnchor.of(urn, key));
return Expression.ScalarFunctionInvocation.builder()
.declaration(declaration)
@@ -782,16 +810,16 @@ public Expression.ScalarFunctionInvocation scalarFn(
}
public Expression.WindowFunctionInvocation windowFn(
- String urn,
- String key,
- Type outputType,
- Expression.AggregationPhase aggregationPhase,
- Expression.AggregationInvocation invocation,
- Expression.WindowBoundsType boundsType,
- WindowBound lowerBound,
- WindowBound upperBound,
- Expression... args) {
- SimpleExtension.WindowFunctionVariant declaration =
+ final String urn,
+ final String key,
+ final Type outputType,
+ final Expression.AggregationPhase aggregationPhase,
+ final Expression.AggregationInvocation invocation,
+ final Expression.WindowBoundsType boundsType,
+ final WindowBound lowerBound,
+ final WindowBound upperBound,
+ final Expression... args) {
+ final SimpleExtension.WindowFunctionVariant declaration =
extensions.getWindowFunction(SimpleExtension.FunctionAnchor.of(urn, key));
return Expression.WindowFunctionInvocation.builder()
.declaration(declaration)
@@ -807,29 +835,29 @@ public Expression.WindowFunctionInvocation windowFn(
// Types
- public Type.UserDefined userDefinedType(String urn, String typeName) {
+ public Type.UserDefined userDefinedType(final String urn, final String typeName) {
return Type.UserDefined.builder().urn(urn).name(typeName).nullable(false).build();
}
// Misc
- public Plan.Root root(Rel rel) {
+ public Plan.Root root(final Rel rel) {
return Plan.Root.builder().input(rel).build();
}
- public Plan plan(Plan.Root root) {
+ public Plan plan(final Plan.Root root) {
return Plan.builder().addRoots(root).build();
}
- public Rel.Remap remap(Integer... fields) {
+ public Rel.Remap remap(final Integer... fields) {
return Rel.Remap.of(Arrays.asList(fields));
}
- public Expression scalarSubquery(Rel input, Type type) {
+ public Expression scalarSubquery(final Rel input, final Type type) {
return Expression.ScalarSubquery.builder().input(input).type(type).build();
}
- public Expression exists(Rel rel) {
+ public Expression exists(final Rel rel) {
return Expression.SetPredicate.builder()
.tuples(rel)
.predicateOp(PredicateOp.PREDICATE_OP_EXISTS)
diff --git a/core/src/main/java/io/substrait/expression/AbstractExpressionVisitor.java b/core/src/main/java/io/substrait/expression/AbstractExpressionVisitor.java
index 072507295..138963816 100644
--- a/core/src/main/java/io/substrait/expression/AbstractExpressionVisitor.java
+++ b/core/src/main/java/io/substrait/expression/AbstractExpressionVisitor.java
@@ -7,202 +7,202 @@ public abstract class AbstractExpressionVisitor R accept(
- SimpleExtension.Function fnDef, int argIdx, FuncArgVisitor fnArgVisitor, C context)
+ final SimpleExtension.Function fnDef,
+ final int argIdx,
+ final FuncArgVisitor fnArgVisitor,
+ final C context)
throws E {
return fnArgVisitor.visitEnumArg(fnDef, argIdx, this, context);
}
- static EnumArg of(SimpleExtension.EnumArgument enumArg, String option) {
+ static EnumArg of(final SimpleExtension.EnumArgument enumArg, final String option) {
assert (enumArg.options().contains(option));
return builder().value(Optional.of(option)).build();
}
- static EnumArg of(String value) {
+ static EnumArg of(final String value) {
return builder().value(Optional.of(value)).build();
}
diff --git a/core/src/main/java/io/substrait/expression/Expression.java b/core/src/main/java/io/substrait/expression/Expression.java
index 42c3c5118..c9750c602 100644
--- a/core/src/main/java/io/substrait/expression/Expression.java
+++ b/core/src/main/java/io/substrait/expression/Expression.java
@@ -20,7 +20,10 @@ public interface Expression extends FunctionArg {
@Override
default R accept(
- SimpleExtension.Function fnDef, int argIdx, FuncArgVisitor fnArgVisitor, C context)
+ final SimpleExtension.Function fnDef,
+ final int argIdx,
+ final FuncArgVisitor fnArgVisitor,
+ final C context)
throws E {
return fnArgVisitor.visitExpr(fnDef, argIdx, this, context);
}
@@ -50,7 +53,7 @@ public static ImmutableExpression.NullLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -70,7 +73,7 @@ public static ImmutableExpression.BoolLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -90,7 +93,7 @@ public static ImmutableExpression.I8Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -110,7 +113,7 @@ public static ImmutableExpression.I16Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -130,7 +133,7 @@ public static ImmutableExpression.I32Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -150,7 +153,7 @@ public static ImmutableExpression.I64Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -170,7 +173,7 @@ public static ImmutableExpression.FP32Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -190,7 +193,7 @@ public static ImmutableExpression.FP64Literal.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -210,7 +213,7 @@ public static ImmutableExpression.StrLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -230,7 +233,7 @@ public static ImmutableExpression.BinaryLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -250,7 +253,7 @@ public static ImmutableExpression.TimestampLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -270,7 +273,7 @@ public static ImmutableExpression.TimeLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -290,7 +293,7 @@ public static ImmutableExpression.DateLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -310,7 +313,7 @@ public static ImmutableExpression.TimestampTZLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -332,7 +335,7 @@ public static ImmutableExpression.PrecisionTimestampLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -354,7 +357,7 @@ public static ImmutableExpression.PrecisionTimestampTZLiteral.Builder builder()
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -376,7 +379,7 @@ public static ImmutableExpression.IntervalYearLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -402,7 +405,7 @@ public static ImmutableExpression.IntervalDayLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -434,7 +437,7 @@ public static ImmutableExpression.IntervalCompoundLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -454,12 +457,12 @@ public static ImmutableExpression.UUIDLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
public ByteString toBytes() {
- ByteBuffer bb = ByteBuffer.allocate(16);
+ final ByteBuffer bb = ByteBuffer.allocate(16);
bb.putLong(value().getMostSignificantBits());
bb.putLong(value().getLeastSignificantBits());
bb.flip();
@@ -482,7 +485,7 @@ public static ImmutableExpression.FixedCharLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -504,7 +507,7 @@ public static ImmutableExpression.VarCharLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -524,7 +527,7 @@ public static ImmutableExpression.FixedBinaryLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -548,7 +551,7 @@ public static ImmutableExpression.DecimalLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -571,7 +574,7 @@ public static ImmutableExpression.MapLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -593,7 +596,7 @@ public static ImmutableExpression.EmptyMapLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -613,7 +616,7 @@ public static ImmutableExpression.ListLiteral.Builder builder() {
@Override
public R accept(
- ExpressionVisitor visitor, C context) throws E {
+ final ExpressionVisitor visitor, final C context) throws E {
return visitor.visit(this, context);
}
}
@@ -633,7 +636,7 @@ public static ImmutableExpression.EmptyListLiteral.Builder builder() {
@Override
public