diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/RelationPlanner.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/RelationPlanner.java index f8a4ee6b658a..8e5d4127cf50 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/RelationPlanner.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/RelationPlanner.java @@ -661,7 +661,7 @@ private PlanBuilder appendProjections(PlanBuilder subPlan, Iterable ImmutableMap.Builder newTranslations = ImmutableMap.builder(); for (Expression expression : expressions) { - Symbol symbol = symbolAllocator.newSymbol(expression, analysis.getType(expression)); + Symbol symbol = symbolAllocator.newSymbol(expression, analysis.getTypeWithCoercions(expression)); // TODO: CHECK IF THE REWRITE OF A SEMI JOINED EXPRESSION WILL WORK!!!!!!! diff --git a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java index e54dfa37cf09..54368edd4231 100644 --- a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java +++ b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java @@ -1197,6 +1197,13 @@ public void testJoinCoercion() assertQuery("SELECT COUNT(*) FROM orders t join (SELECT * FROM orders LIMIT 1) t2 ON sin(t2.custkey) = 0"); } + @Test + public void testJoinCoercionOnEqualityComparison() + throws Exception + { + assertQuery("SELECT o.clerk, avg(o.shippriority), COUNT(l.linenumber) FROM orders o LEFT OUTER JOIN lineitem l ON o.orderkey=l.orderkey AND o.shippriority=1 GROUP BY o.clerk"); + } + @Test public void testGroupByNoAggregations() throws Exception