Skip to content

Commit

Permalink
Change error message for unsupported join conjunct
Browse files Browse the repository at this point in the history
Previous message was misleading because classification, if conjunct is
supported or not, is more complext that checking if it is equality
comparison or not.

There are cases when specific equality conjuncts are not supported
and cases when different types of conjuncts are supported.
  • Loading branch information
losipiuk authored and martint committed May 24, 2016
1 parent 2729be9 commit fdd802d
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ else if (node.getType() == RIGHT) {
}

if (!isEqualComparisonExpression(conjunct) && node.getType() != INNER) {
throw new SemanticException(NOT_SUPPORTED, node, "Non-equi joins only supported for inner join or must relate to inner side of outer join: %s", conjunct);
throw new SemanticException(NOT_SUPPORTED, node, "Unsupported conjunct in join condition: %s", conjunct);
}

if (conjunct instanceof ComparisonExpression) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1946,19 +1946,19 @@ public void testSupportedNonEqualityLeftJoin()
public void testUnsupportedNonEqualityLeftJoin()
throws Exception
{
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.custkey > lineitem.quantity", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.quantity > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.custkey > lineitem.quantity", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > 5", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem LEFT OUTER JOIN orders ON lineitem.quantity > 5", ".*Unsupported conjunct.*");
}

@Test
public void testUnsupportedNonEqualityFullJoin()
throws Exception
{
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.custkey > 1000", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.quantity > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON orders.custkey > 1000", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > 5", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.custkey > 1000", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON lineitem.quantity > 5", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem FULL OUTER JOIN orders ON orders.custkey > 1000", ".*Unsupported conjunct.*");
}

@Test
Expand All @@ -1980,9 +1980,9 @@ public void testSupportedNonEqualityRightJoin()
public void testUnsupportedNonEqualityRightJoin()
throws Exception
{
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > orders.shippriority", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.shippriority > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON orders.shippriority > 5", ".*Non-equi.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND lineitem.quantity > orders.shippriority", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON lineitem.orderkey = orders.orderkey AND orders.shippriority > 5", ".*Unsupported conjunct.*");
assertQueryFails("SELECT COUNT(*) FROM lineitem RIGHT OUTER JOIN orders ON orders.shippriority > 5", ".*Unsupported conjunct.*");
}

@Test
Expand Down

0 comments on commit fdd802d

Please sign in to comment.