diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/SubqueryPlanner.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/SubqueryPlanner.java index 0dbf9bdc552ce..4b9e7bde368f3 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/SubqueryPlanner.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/SubqueryPlanner.java @@ -196,7 +196,7 @@ private PlanBuilder appendInPredicateApplyNode(PlanBuilder subPlan, InPredicate subPlan.getTranslations().put(inPredicate, inPredicateSubquerySymbol); - return appendApplyNode(subPlan, inPredicate, subqueryPlan.getRoot(), Assignments.of(inPredicateSubquerySymbol, inPredicateSubqueryExpression), correlationAllowed); + return appendApplyNode(subPlan, inPredicate, subqueryPlan.getRoot(), Assignments.of(inPredicateSubquerySymbol, castToRowExpression(inPredicateSubqueryExpression)), correlationAllowed); } private PlanBuilder appendScalarSubqueryApplyNodes(PlanBuilder builder, Set scalarSubqueries, boolean correlationAllowed) @@ -295,7 +295,7 @@ private PlanBuilder appendExistSubqueryApplyNode(PlanBuilder subPlan, ExistsPred subPlan, existsPredicate.getSubquery(), subqueryNode, - Assignments.of(exists, rewrittenExistsPredicate), + Assignments.of(exists, castToRowExpression(rewrittenExistsPredicate)), correlationAllowed); } @@ -393,7 +393,7 @@ private PlanBuilder planQuantifiedApplyNode(PlanBuilder subPlan, QuantifiedCompa subPlan, quantifiedComparison.getSubquery(), subqueryPlan.getRoot(), - Assignments.of(coercedQuantifiedComparisonSymbol, coercedQuantifiedComparison), + Assignments.of(coercedQuantifiedComparisonSymbol, castToRowExpression(coercedQuantifiedComparison)), correlationAllowed); } diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/EliminateCrossJoins.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/EliminateCrossJoins.java index d90a4d4c23965..64271a989fd68 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/EliminateCrossJoins.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/EliminateCrossJoins.java @@ -44,6 +44,7 @@ import static com.facebook.presto.sql.analyzer.FeaturesConfig.JoinReorderingStrategy.ELIMINATE_CROSS_JOINS; import static com.facebook.presto.sql.planner.iterative.rule.Util.restrictOutputs; import static com.facebook.presto.sql.planner.plan.Patterns.join; +import static com.facebook.presto.sql.relational.ProjectNodeUtils.getAsRowExpression; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableList.toImmutableList; @@ -202,7 +203,7 @@ public static PlanNode buildJoinTree(List expectedOutputSymbols, JoinGra result = new ProjectNode( idAllocator.getNextId(), result, - Assignments.copyOf(graph.getAssignments().get())); + Assignments.copyOf(getAsRowExpression(graph.getAssignments().get()))); } // If needed, introduce a projection to constrain the outputs to what was originally expected diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/GatherAndMergeWindows.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/GatherAndMergeWindows.java index b4aa55db2c23e..60d91c311f29b 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/GatherAndMergeWindows.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/GatherAndMergeWindows.java @@ -46,6 +46,7 @@ import static com.facebook.presto.sql.planner.plan.Patterns.project; import static com.facebook.presto.sql.planner.plan.Patterns.source; import static com.facebook.presto.sql.planner.plan.Patterns.window; +import static com.facebook.presto.sql.relational.ProjectNodeUtils.isIdentity; import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.collect.ImmutableSet.toImmutableSet; @@ -140,7 +141,7 @@ protected static Optional pullWindowNodeAboveProjects( // The target node, when hoisted above the projections, will provide the symbols directly. Map assignmentsWithoutTargetOutputIdentities = Maps.filterKeys( project.getAssignments().getMap(), - output -> !(project.getAssignments().isIdentity(output) && targetOutputs.contains(output))); + output -> !(isIdentity(project, output) && targetOutputs.contains(output))); if (targetInputs.stream().anyMatch(assignmentsWithoutTargetOutputIdentities::containsKey)) { // Redefinition of an input to the target -- can't handle this case. diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/InlineProjections.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/InlineProjections.java index 56b1239d2121b..446e2b48c8735 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/InlineProjections.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/InlineProjections.java @@ -37,6 +37,8 @@ import static com.facebook.presto.sql.planner.ExpressionSymbolInliner.inlineSymbols; import static com.facebook.presto.sql.planner.plan.Patterns.project; import static com.facebook.presto.sql.planner.plan.Patterns.source; +import static com.facebook.presto.sql.relational.ProjectNodeUtils.getAsRowExpression; +import static com.facebook.presto.sql.relational.ProjectNodeUtils.isIdentity; import static java.util.stream.Collectors.toSet; /** @@ -105,7 +107,7 @@ public Result apply(ProjectNode parent, Captures captures, Context context) child.getId(), child.getSource(), childAssignments.build()), - Assignments.copyOf(parentAssignments))); + Assignments.copyOf(getAsRowExpression(parentAssignments)))); } private Expression inlineReferences(Expression expression, Assignments assignments) @@ -155,7 +157,7 @@ private Sets.SetView extractInliningTargets(ProjectNode parent, ProjectN Set singletons = dependencies.entrySet().stream() .filter(entry -> entry.getValue() == 1) // reference appears just once across all expressions in parent project node .filter(entry -> !tryArguments.contains(entry.getKey())) // they are not inputs to TRY. Otherwise, inlining might change semantics - .filter(entry -> !child.getAssignments().isIdentity(entry.getKey())) // skip identities, otherwise, this rule will keep firing forever + .filter(entry -> !isIdentity(child, entry.getKey())) // skip identities, otherwise, this rule will keep firing forever .map(Map.Entry::getKey) .collect(toSet()); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/TransformExistsApplyToLateralNode.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/TransformExistsApplyToLateralNode.java index 3257b2c2f807c..94d19378bcf07 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/TransformExistsApplyToLateralNode.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/TransformExistsApplyToLateralNode.java @@ -47,6 +47,7 @@ import static com.facebook.presto.sql.planner.plan.LateralJoinNode.Type.INNER; import static com.facebook.presto.sql.planner.plan.LateralJoinNode.Type.LEFT; import static com.facebook.presto.sql.planner.plan.Patterns.applyNode; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; import static com.facebook.presto.sql.tree.ComparisonExpression.Operator.GREATER_THAN; import static com.google.common.base.Preconditions.checkState; @@ -130,7 +131,7 @@ private Optional rewriteToNonDefaultAggregation(ApplyNode applyNode, C applyNode.getSubquery(), 1L, false), - Assignments.of(subqueryTrue, TRUE_LITERAL)); + Assignments.of(subqueryTrue, castToRowExpression(TRUE_LITERAL))); PlanNodeDecorrelator decorrelator = new PlanNodeDecorrelator(context.getIdAllocator(), context.getLookup()); if (!decorrelator.decorrelateFilters(subquery, applyNode.getCorrelation()).isPresent()) { @@ -153,6 +154,7 @@ private PlanNode rewriteToDefaultAggregation(ApplyNode parent, Context context) Symbol count = context.getSymbolAllocator().newSymbol(COUNT.toString(), BIGINT); Symbol exists = getOnlyElement(parent.getSubqueryAssignments().getSymbols()); + final ComparisonExpression comparisonExpression = new ComparisonExpression(GREATER_THAN, count.toSymbolReference(), new Cast(new LongLiteral("0"), BIGINT.toString())); return new LateralJoinNode( parent.getId(), parent.getInput(), @@ -170,7 +172,7 @@ private PlanNode rewriteToDefaultAggregation(ApplyNode parent, Context context) AggregationNode.Step.SINGLE, Optional.empty(), Optional.empty()), - Assignments.of(exists, new ComparisonExpression(GREATER_THAN, count.toSymbolReference(), new Cast(new LongLiteral("0"), BIGINT.toString())))), + Assignments.of(exists, castToRowExpression(comparisonExpression))), parent.getCorrelation(), INNER, parent.getOriginSubquery()); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/optimizations/TransformQuantifiedComparisonApplyToLateralJoin.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/optimizations/TransformQuantifiedComparisonApplyToLateralJoin.java index 3639078862159..2d9c6bc6c8984 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/optimizations/TransformQuantifiedComparisonApplyToLateralJoin.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/optimizations/TransformQuantifiedComparisonApplyToLateralJoin.java @@ -57,6 +57,7 @@ import static com.facebook.presto.sql.analyzer.TypeSignatureProvider.fromTypes; import static com.facebook.presto.sql.planner.plan.AggregationNode.globalAggregation; import static com.facebook.presto.sql.planner.plan.SimplePlanRewriter.rewriteWith; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.FALSE_LITERAL; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; import static com.facebook.presto.sql.tree.ComparisonExpression.Operator.EQUAL; @@ -180,7 +181,7 @@ countNonNullValue, new Aggregation( Symbol quantifiedComparisonSymbol = getOnlyElement(node.getSubqueryAssignments().getSymbols()); - return projectExpressions(lateralJoinNode, Assignments.of(quantifiedComparisonSymbol, valueComparedToSubquery)); + return projectExpressions(lateralJoinNode, Assignments.of(quantifiedComparisonSymbol, castToRowExpression(valueComparedToSubquery))); } public Expression rewriteUsingBounds(QuantifiedComparisonExpression quantifiedComparison, Symbol minValue, Symbol maxValue, Symbol countAllValue, Symbol countNonNullValue) diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/Assignments.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/Assignments.java index 749613cd80d8c..56e4bf4dc6b59 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/Assignments.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/Assignments.java @@ -13,11 +13,11 @@ */ package com.facebook.presto.sql.planner.plan; +import com.facebook.presto.spi.relation.RowExpression; import com.facebook.presto.sql.planner.Symbol; import com.facebook.presto.sql.tree.Expression; import com.facebook.presto.sql.tree.ExpressionRewriter; import com.facebook.presto.sql.tree.ExpressionTreeRewriter; -import com.facebook.presto.sql.tree.SymbolReference; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Predicate; @@ -35,6 +35,8 @@ import java.util.function.Function; import java.util.stream.Collector; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToExpression; +import static com.facebook.presto.sql.relational.ProjectNodeUtils.getAsExpression; import static com.google.common.base.Preconditions.checkState; import static java.util.Arrays.asList; import static java.util.Objects.requireNonNull; @@ -56,10 +58,10 @@ public static Assignments identity(Iterable symbols) return builder().putIdentities(symbols).build(); } - public static Assignments copyOf(Map assignments) + public static Assignments copyOf(Map assignments) { return builder() - .putAll(assignments) + .putAll(getAsExpression(assignments)) .build(); } @@ -68,14 +70,14 @@ public static Assignments of() return builder().build(); } - public static Assignments of(Symbol symbol, Expression expression) + public static Assignments of(Symbol symbol, RowExpression expression) { - return builder().put(symbol, expression).build(); + return builder().put(symbol, castToExpression(expression)).build(); } - public static Assignments of(Symbol symbol1, Expression expression1, Symbol symbol2, Expression expression2) + public static Assignments of(Symbol symbol1, RowExpression expression1, Symbol symbol2, RowExpression expression2) { - return builder().put(symbol1, expression1).put(symbol2, expression2).build(); + return builder().put(symbol1, castToExpression(expression1)).put(symbol2, castToExpression(expression2)).build(); } private final Map assignments; @@ -121,13 +123,6 @@ public Assignments filter(Predicate predicate) .collect(toAssignments()); } - public boolean isIdentity(Symbol output) - { - Expression expression = assignments.get(output); - - return expression instanceof SymbolReference && ((SymbolReference) expression).getName().equals(output.getName()); - } - private Collector, Builder, Assignments> toAssignments() { return Collector.of( diff --git a/presto-main/src/main/java/com/facebook/presto/sql/relational/ProjectNodeUtils.java b/presto-main/src/main/java/com/facebook/presto/sql/relational/ProjectNodeUtils.java index 8a6c2fa040a3b..1f17aa857b44f 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/relational/ProjectNodeUtils.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/relational/ProjectNodeUtils.java @@ -13,12 +13,17 @@ */ package com.facebook.presto.sql.relational; +import com.facebook.presto.spi.relation.RowExpression; import com.facebook.presto.sql.planner.Symbol; import com.facebook.presto.sql.planner.plan.ProjectNode; import com.facebook.presto.sql.tree.Expression; import com.facebook.presto.sql.tree.SymbolReference; import java.util.Map; +import java.util.stream.Collectors; + +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToExpression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class ProjectNodeUtils { @@ -26,13 +31,34 @@ private ProjectNodeUtils() {} public static boolean isIdentity(ProjectNode projectNode) { - for (Map.Entry entry : projectNode.getAssignments().entrySet()) { - Expression expression = entry.getValue(); - Symbol symbol = entry.getKey(); - if (!(expression instanceof SymbolReference && ((SymbolReference) expression).getName().equals(symbol.getName()))) { + for (Symbol symbol : projectNode.getAssignments().getSymbols()) { + if (!isIdentity(projectNode, symbol)) { return false; } } return true; } + + public static boolean isIdentity(ProjectNode projectNode, Symbol output) + { + Expression expression = projectNode.getAssignments().get(output); + + return expression instanceof SymbolReference && ((SymbolReference) expression).getName().equals(output.getName()); + } + + public static Map getAsExpression(Map assignments) + { + return assignments.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + entry -> castToExpression(entry.getValue()))); + } + + public static Map getAsRowExpression(Map assignments) + { + return assignments.entrySet().stream() + .collect(Collectors.toMap( + Map.Entry::getKey, + entry -> castToRowExpression(entry.getValue()))); + } } diff --git a/presto-main/src/test/java/com/facebook/presto/cost/TestCostCalculator.java b/presto-main/src/test/java/com/facebook/presto/cost/TestCostCalculator.java index 8587f911313dc..6e6f1757ae73f 100644 --- a/presto-main/src/test/java/com/facebook/presto/cost/TestCostCalculator.java +++ b/presto-main/src/test/java/com/facebook/presto/cost/TestCostCalculator.java @@ -81,6 +81,7 @@ import static com.facebook.presto.sql.planner.plan.ExchangeNode.Scope.REMOTE_STREAMING; import static com.facebook.presto.sql.planner.plan.ExchangeNode.replicatedExchange; import static com.facebook.presto.sql.planner.plan.ExchangeNode.systemPartitionedExchange; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.testing.TestingSession.createBogusTestingCatalog; import static com.facebook.presto.testing.TestingSession.testSessionBuilder; import static com.facebook.presto.tpch.TpchTransactionHandle.INSTANCE; @@ -759,7 +760,7 @@ private PlanNode project(String id, PlanNode source, String symbol, Expression e return new ProjectNode( new PlanNodeId(id), source, - Assignments.of(new Symbol(symbol), expression)); + Assignments.of(new Symbol(symbol), castToRowExpression(expression))); } private AggregationNode aggregation(String id, PlanNode source) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestEffectivePredicateExtractor.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestEffectivePredicateExtractor.java index 2b64428b472e3..5e44c13fcf3f4 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestEffectivePredicateExtractor.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestEffectivePredicateExtractor.java @@ -78,6 +78,7 @@ import static com.facebook.presto.sql.ExpressionUtils.or; import static com.facebook.presto.sql.planner.plan.AggregationNode.globalAggregation; import static com.facebook.presto.sql.planner.plan.AggregationNode.singleGroupingSet; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.FALSE_LITERAL; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; import static org.testng.Assert.assertEquals; @@ -212,7 +213,7 @@ public void testProject() equals(AE, BE), equals(BE, CE), lessThan(CE, bigintLiteral(10)))), - Assignments.of(D, AE, E, CE)); + Assignments.of(D, castToRowExpression(AE), E, castToRowExpression(CE))); Expression effectivePredicate = effectivePredicateExtractor.extract(node); diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestEliminateCrossJoins.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestEliminateCrossJoins.java index dffc428870741..a5c19ceafccc2 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestEliminateCrossJoins.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestEliminateCrossJoins.java @@ -42,6 +42,7 @@ import static com.facebook.presto.sql.planner.iterative.rule.EliminateCrossJoins.getJoinOrder; import static com.facebook.presto.sql.planner.iterative.rule.EliminateCrossJoins.isOriginalOrder; import static com.facebook.presto.sql.planner.plan.JoinNode.Type.INNER; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.ArithmeticUnaryExpression.Sign.MINUS; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.ImmutableList.toImmutableList; @@ -250,7 +251,7 @@ private PlanNode projectNode(PlanNode source, String symbol, Expression expressi return new ProjectNode( idAllocator.getNextId(), source, - Assignments.of(new Symbol(symbol), expression)); + Assignments.of(new Symbol(symbol), castToRowExpression(expression))); } private String symbol(String name) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestExpressionRewriteRuleSet.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestExpressionRewriteRuleSet.java index 5a420691bd7df..34560bcb0f297 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestExpressionRewriteRuleSet.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestExpressionRewriteRuleSet.java @@ -58,7 +58,7 @@ public void testProjectionExpressionRewrite() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( - Assignments.of(p.symbol("y"), PlanBuilder.expression("x IS NOT NULL")), + Assignments.of(p.symbol("y"), castToRowExpression(PlanBuilder.expression("x IS NOT NULL"))), p.values(p.symbol("x")))) .matches( project(ImmutableMap.of("y", expression("0")), values("x"))); @@ -69,7 +69,7 @@ public void testProjectionExpressionNotRewritten() { tester().assertThat(zeroRewriter.projectExpressionRewrite()) .on(p -> p.project( - Assignments.of(p.symbol("y"), PlanBuilder.expression("0")), + Assignments.of(p.symbol("y"), castToRowExpression(PlanBuilder.expression("0"))), p.values(p.symbol("x")))) .doesNotFire(); } @@ -152,11 +152,11 @@ public void testApplyExpressionRewrite() .on(p -> p.apply( Assignments.of( p.symbol("a", BIGINT), - new InPredicate( + castToRowExpression(new InPredicate( new LongLiteral("1"), new InListExpression(ImmutableList.of( new LongLiteral("1"), - new LongLiteral("2"))))), + new LongLiteral("2")))))), ImmutableList.of(), p.values(), p.values())) @@ -175,11 +175,11 @@ public void testApplyExpressionNotRewritten() .on(p -> p.apply( Assignments.of( p.symbol("a", BIGINT), - new InPredicate( + castToRowExpression(new InPredicate( new LongLiteral("0"), new InListExpression(ImmutableList.of( new LongLiteral("1"), - new LongLiteral("2"))))), + new LongLiteral("2")))))), ImmutableList.of(), p.values(), p.values())) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestInlineProjections.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestInlineProjections.java index efd8fcf6c5b20..693092d22aec0 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestInlineProjections.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestInlineProjections.java @@ -23,6 +23,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestInlineProjections extends BaseRuleTest @@ -73,7 +74,7 @@ public void testIdentityProjections() tester().assertThat(new InlineProjections()) .on(p -> p.project( - Assignments.of(p.symbol("output"), expression("value")), + Assignments.of(p.symbol("output"), castToRowExpression(expression("value"))), p.project( Assignments.identity(p.symbol("value")), p.values(p.symbol("value"))))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneCountAggregationOverScalar.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneCountAggregationOverScalar.java index 1db68352cc530..52b4b1abbacc5 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneCountAggregationOverScalar.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneCountAggregationOverScalar.java @@ -33,6 +33,7 @@ import static com.facebook.presto.spi.type.DoubleType.DOUBLE; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.plan.AggregationNode.singleGroupingSet; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.tpch.TpchMetadata.TINY_SCALE_FACTOR; public class TestPruneCountAggregationOverScalar @@ -142,7 +143,7 @@ public void testDoesNotFireOnNestedNonCountAggregate() .globalGrouping() .source( p.project( - Assignments.of(totalPrice, totalPrice.toSymbolReference()), + Assignments.of(totalPrice, castToRowExpression(totalPrice.toSymbolReference())), p.tableScan( new TableHandle( new ConnectorId("local"), diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneMarkDistinctColumns.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneMarkDistinctColumns.java index d474e0dbc3ce8..291f5e16cbd9e 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneMarkDistinctColumns.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneMarkDistinctColumns.java @@ -24,6 +24,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.markDistinct; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.strictProject; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestPruneMarkDistinctColumns extends BaseRuleTest @@ -39,7 +40,7 @@ public void testMarkerSymbolNotReferenced() Symbol mark = p.symbol("mark"); Symbol unused = p.symbol("unused"); return p.project( - Assignments.of(key2, key.toSymbolReference()), + Assignments.of(key2, castToRowExpression(key.toSymbolReference())), p.markDistinct(mark, ImmutableList.of(key), p.values(key, unused))); }) .matches( diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneTableScanColumns.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneTableScanColumns.java index 5127108823a9e..cadf366247fe3 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneTableScanColumns.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneTableScanColumns.java @@ -31,6 +31,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.strictProject; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.strictTableScan; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.tpch.TpchMetadata.TINY_SCALE_FACTOR; public class TestPruneTableScanColumns @@ -45,7 +46,7 @@ public void testNotAllOutputsReferenced() Symbol orderdate = p.symbol("orderdate", DATE); Symbol totalprice = p.symbol("totalprice", DOUBLE); return p.project( - Assignments.of(p.symbol("x"), totalprice.toSymbolReference()), + Assignments.of(p.symbol("x"), castToRowExpression(totalprice.toSymbolReference())), p.tableScan( new TableHandle( new ConnectorId("local"), @@ -67,7 +68,7 @@ public void testAllOutputsReferenced() tester().assertThat(new PruneTableScanColumns()) .on(p -> p.project( - Assignments.of(p.symbol("y"), expression("x")), + Assignments.of(p.symbol("y"), castToRowExpression(expression("x"))), p.tableScan( ImmutableList.of(p.symbol("x")), ImmutableMap.of(p.symbol("x"), new TestingColumnHandle("x"))))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneValuesColumns.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneValuesColumns.java index e21c5d253edfd..daa7151d51650 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneValuesColumns.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPruneValuesColumns.java @@ -25,6 +25,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.constantExpressions; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestPruneValuesColumns extends BaseRuleTest @@ -35,7 +36,7 @@ public void testNotAllOutputsReferenced() tester().assertThat(new PruneValuesColumns()) .on(p -> p.project( - Assignments.of(p.symbol("y"), expression("x")), + Assignments.of(p.symbol("y"), castToRowExpression(expression("x"))), p.values( ImmutableList.of(p.symbol("unused"), p.symbol("x")), ImmutableList.of( @@ -57,7 +58,7 @@ public void testAllOutputsReferenced() tester().assertThat(new PruneValuesColumns()) .on(p -> p.project( - Assignments.of(p.symbol("y"), expression("x")), + Assignments.of(p.symbol("y"), castToRowExpression(expression("x"))), p.values(p.symbol("x")))) .doesNotFire(); } diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushLimitThroughProject.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushLimitThroughProject.java index d6ea56e937a4b..59d724fde3d14 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushLimitThroughProject.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushLimitThroughProject.java @@ -23,6 +23,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.limit; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.strictProject; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; public class TestPushLimitThroughProject @@ -36,7 +37,7 @@ public void testPushdownLimitNonIdentityProjection() Symbol a = p.symbol("a"); return p.limit(1, p.project( - Assignments.of(a, TRUE_LITERAL), + Assignments.of(a, castToRowExpression(TRUE_LITERAL)), p.values())); }) .matches( @@ -53,7 +54,7 @@ public void testDoesntPushdownLimitThroughIdentityProjection() Symbol a = p.symbol("a"); return p.limit(1, p.project( - Assignments.of(a, a.toSymbolReference()), + Assignments.of(a, castToRowExpression(a.toSymbolReference())), p.values(a))); }).doesNotFire(); } diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughExchange.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughExchange.java index 0a0e7c1082041..4687ed30ad760 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughExchange.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughExchange.java @@ -32,6 +32,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.plan.ExchangeNode.Scope.REMOTE_STREAMING; import static com.facebook.presto.sql.planner.plan.ExchangeNode.Type.GATHER; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.SortItem.NullOrdering.FIRST; import static com.facebook.presto.sql.tree.SortItem.Ordering.ASCENDING; @@ -44,7 +45,7 @@ public void testDoesNotFireNoExchange() tester().assertThat(new PushProjectionThroughExchange()) .on(p -> p.project( - Assignments.of(p.symbol("x"), new LongLiteral("3")), + Assignments.of(p.symbol("x"), castToRowExpression(new LongLiteral("3"))), p.values(p.symbol("a")))) .doesNotFire(); } @@ -83,8 +84,8 @@ public void testSimpleMultipleInputs() Symbol x = p.symbol("x"); return p.project( Assignments.of( - x, new LongLiteral("3"), - c2, new SymbolReference("c")), + x, castToRowExpression(new LongLiteral("3")), + c2, castToRowExpression(new SymbolReference("c"))), p.exchange(e -> e .addSource( p.values(a)) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughUnion.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughUnion.java index 2b22593cb6fa5..643161930e730 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughUnion.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestPushProjectionThroughUnion.java @@ -27,6 +27,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.union; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestPushProjectionThroughUnion extends BaseRuleTest @@ -37,7 +38,7 @@ public void testDoesNotFire() tester().assertThat(new PushProjectionThroughUnion()) .on(p -> p.project( - Assignments.of(p.symbol("x"), new LongLiteral("3")), + Assignments.of(p.symbol("x"), castToRowExpression(new LongLiteral("3"))), p.values(p.symbol("a")))) .doesNotFire(); } @@ -51,8 +52,9 @@ public void test() Symbol b = p.symbol("b"); Symbol c = p.symbol("c"); Symbol cTimes3 = p.symbol("c_times_3"); + final ArithmeticBinaryExpression arithmeticBinaryExpression = new ArithmeticBinaryExpression(ArithmeticBinaryExpression.Operator.MULTIPLY, c.toSymbolReference(), new LongLiteral("3")); return p.project( - Assignments.of(cTimes3, new ArithmeticBinaryExpression(ArithmeticBinaryExpression.Operator.MULTIPLY, c.toSymbolReference(), new LongLiteral("3"))), + Assignments.of(cTimes3, castToRowExpression(arithmeticBinaryExpression)), p.union( ImmutableListMultimap.builder() .put(c, a) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestRemoveUnreferencedScalarApplyNodes.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestRemoveUnreferencedScalarApplyNodes.java index 1532466c06cbb..32957e4e2ee11 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestRemoveUnreferencedScalarApplyNodes.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestRemoveUnreferencedScalarApplyNodes.java @@ -20,6 +20,7 @@ import org.testng.annotations.Test; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestRemoveUnreferencedScalarApplyNodes extends BaseRuleTest @@ -29,7 +30,7 @@ public void testDoesNotFire() { tester().assertThat(new RemoveUnreferencedScalarApplyNodes()) .on(p -> p.apply( - Assignments.of(p.symbol("z"), p.expression("x IN (y)")), + Assignments.of(p.symbol("z"), castToRowExpression(p.expression("x IN (y)"))), ImmutableList.of(), p.values(p.symbol("x")), p.values(p.symbol("y")))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarAggregationToJoin.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarAggregationToJoin.java index afbc3ab6b62ba..77da6f86bc9a3 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarAggregationToJoin.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarAggregationToJoin.java @@ -29,6 +29,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.join; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestTransformCorrelatedScalarAggregationToJoin extends BaseRuleTest @@ -106,7 +107,7 @@ public void rewritesOnSubqueryWithProjection() .on(p -> p.lateral( ImmutableList.of(p.symbol("corr")), p.values(p.symbol("corr")), - p.project(Assignments.of(p.symbol("expr"), p.expression("sum + 1")), + p.project(Assignments.of(p.symbol("expr"), castToRowExpression(p.expression("sum + 1"))), p.aggregation(ab -> ab .source(p.values(p.symbol("a"), p.symbol("b"))) .addAggregation(p.symbol("sum"), PlanBuilder.expression("sum(a)"), ImmutableList.of(BIGINT)) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java index cd70861189a7c..e66b9f55787dc 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedScalarSubquery.java @@ -47,6 +47,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.constantExpressions; import static com.facebook.presto.sql.relational.Expressions.constant; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; public class TestTransformCorrelatedScalarSubquery @@ -124,7 +125,7 @@ public void rewritesOnSubqueryWithProjection() p.values(p.symbol("corr")), p.enforceSingleRow( p.project( - Assignments.of(p.symbol("a2"), p.expression("a * 2")), + Assignments.of(p.symbol("a2"), castToRowExpression(p.expression("a * 2"))), p.filter( p.expression("1 = a"), // TODO use correlated predicate, it requires support for correlated subqueries in plan matchers p.values(ImmutableList.of(p.symbol("a")), TWO_ROWS)))))) @@ -153,10 +154,10 @@ public void rewritesOnSubqueryWithProjectionOnTopEnforceSingleNode() ImmutableList.of(p.symbol("corr")), p.values(p.symbol("corr")), p.project( - Assignments.of(p.symbol("a3"), p.expression("a2 + 1")), + Assignments.of(p.symbol("a3"), castToRowExpression(p.expression("a2 + 1"))), p.enforceSingleRow( p.project( - Assignments.of(p.symbol("a2"), p.expression("a * 2")), + Assignments.of(p.symbol("a2"), castToRowExpression(p.expression("a * 2"))), p.filter( p.expression("1 = a"), // TODO use correlated predicate, it requires support for correlated subqueries in plan matchers p.values(ImmutableList.of(p.symbol("a")), TWO_ROWS))))))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedSingleRowSubqueryToProject.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedSingleRowSubqueryToProject.java index 94612fac9ba78..caca4d654f6af 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedSingleRowSubqueryToProject.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformCorrelatedSingleRowSubqueryToProject.java @@ -28,6 +28,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.tableScan; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.tpch.TpchMetadata.TINY_SCALE_FACTOR; public class TestTransformCorrelatedSingleRowSubqueryToProject @@ -54,7 +55,7 @@ public void testRewrite() ImmutableMap.of(p.symbol("l_nationkey"), new TpchColumnHandle("nationkey", BIGINT))), p.project( - Assignments.of(p.symbol("l_expr2"), expression("l_nationkey + 1")), + Assignments.of(p.symbol("l_expr2"), castToRowExpression(expression("l_nationkey + 1"))), p.values( ImmutableList.of(), ImmutableList.of(ImmutableList.of()))))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformExistsApplyToLateralJoin.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformExistsApplyToLateralJoin.java index 5326704f45481..c0a3415ba46f4 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformExistsApplyToLateralJoin.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformExistsApplyToLateralJoin.java @@ -30,6 +30,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestTransformExistsApplyToLateralJoin extends BaseRuleTest @@ -56,7 +57,7 @@ public void testRewrite() tester().assertThat(new TransformExistsApplyToLateralNode(tester().getMetadata().getFunctionManager())) .on(p -> p.apply( - Assignments.of(p.symbol("b", BOOLEAN), expression("EXISTS(SELECT TRUE)")), + Assignments.of(p.symbol("b", BOOLEAN), castToRowExpression(expression("EXISTS(SELECT TRUE)"))), ImmutableList.of(), p.values(), p.values())) @@ -75,7 +76,7 @@ public void testRewritesToLimit() tester().assertThat(new TransformExistsApplyToLateralNode(tester().getMetadata().getFunctionManager())) .on(p -> p.apply( - Assignments.of(p.symbol("b", BOOLEAN), expression("EXISTS(SELECT TRUE)")), + Assignments.of(p.symbol("b", BOOLEAN), castToRowExpression(expression("EXISTS(SELECT TRUE)"))), ImmutableList.of(p.symbol("corr")), p.values(p.symbol("corr")), p.project(Assignments.of(), diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformUncorrelatedInPredicateSubqueryToSemiJoin.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformUncorrelatedInPredicateSubqueryToSemiJoin.java index 47255b4fc74b4..36852a429ba7a 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformUncorrelatedInPredicateSubqueryToSemiJoin.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/TestTransformUncorrelatedInPredicateSubqueryToSemiJoin.java @@ -24,6 +24,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.node; import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static java.util.Collections.emptyList; public class TestTransformUncorrelatedInPredicateSubqueryToSemiJoin @@ -46,7 +47,8 @@ public void testDoesNotFireOnNonInPredicateSubquery() { tester().assertThat(new TransformUncorrelatedInPredicateSubqueryToSemiJoin()) .on(p -> p.apply( - Assignments.of(p.symbol("x"), new ExistsPredicate(new LongLiteral("1"))), + Assignments.of(p.symbol("x"), + castToRowExpression(new ExistsPredicate(new LongLiteral("1")))), emptyList(), p.values(), p.values())) @@ -60,9 +62,9 @@ public void testFiresForInPredicate() .on(p -> p.apply( Assignments.of( p.symbol("x"), - new InPredicate( + castToRowExpression(new InPredicate( new SymbolReference("y"), - new SymbolReference("z"))), + new SymbolReference("z")))), emptyList(), p.values(p.symbol("y")), p.values(p.symbol("z")))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/test/TestRuleTester.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/test/TestRuleTester.java index 729c330d3fb02..be49e91a3c538 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/test/TestRuleTester.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/iterative/rule/test/TestRuleTester.java @@ -25,6 +25,7 @@ import static com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.constantExpressions; import static com.facebook.presto.sql.planner.iterative.rule.test.PlanBuilder.expression; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; public class TestRuleTester { @@ -35,7 +36,7 @@ public void testReportWrongMatch() tester.assertThat(new DummyReplaceNodeRule()) .on(p -> p.project( - Assignments.of(p.symbol("y"), expression("x")), + Assignments.of(p.symbol("y"), castToRowExpression(expression("x"))), p.values( ImmutableList.of(p.symbol("x")), ImmutableList.of(constantExpressions(BIGINT, 1))))) diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/plan/TestAssingments.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/plan/TestAssingments.java index 4f121265984e5..617a35d09074d 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/plan/TestAssingments.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/plan/TestAssingments.java @@ -17,12 +17,13 @@ import com.google.common.collect.ImmutableCollection; import org.testng.annotations.Test; +import static com.facebook.presto.sql.relational.OriginalExpressionUtils.castToRowExpression; import static com.facebook.presto.sql.tree.BooleanLiteral.TRUE_LITERAL; import static org.testng.Assert.assertTrue; public class TestAssingments { - private final Assignments assignments = Assignments.of(new Symbol("test"), TRUE_LITERAL); + private final Assignments assignments = Assignments.of(new Symbol("test"), castToRowExpression(TRUE_LITERAL)); @Test public void testOutputsImmutable()