From fdad339d647fe7cfc6587e02c48f3cba27b87206 Mon Sep 17 00:00:00 2001 From: Raghav Sethi Date: Wed, 13 Apr 2016 11:04:47 -0700 Subject: [PATCH] Fix joins to check for coerced types Also added test that ran without this fix, but produced incorrect plan. --- .../com/facebook/presto/sql/planner/RelationPlanner.java | 2 +- .../com/facebook/presto/tests/AbstractTestQueries.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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