Skip to content

Commit

Permalink
#150: enabled join pushdown for oracle
Browse files Browse the repository at this point in the history
  • Loading branch information
snehlsen committed May 7, 2019
1 parent 487990e commit 99479c1
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public Capabilities getCapabilities() {
final Capabilities.Builder builder = Capabilities.builder();
builder.addMain(SELECTLIST_PROJECTION, SELECTLIST_EXPRESSIONS, FILTER_EXPRESSIONS, AGGREGATE_SINGLE_GROUP,
AGGREGATE_GROUP_BY_COLUMN, AGGREGATE_GROUP_BY_EXPRESSION, AGGREGATE_GROUP_BY_TUPLE, AGGREGATE_HAVING,
ORDER_BY_COLUMN, ORDER_BY_EXPRESSION, LIMIT, LIMIT_WITH_OFFSET);
ORDER_BY_COLUMN, ORDER_BY_EXPRESSION, LIMIT, LIMIT_WITH_OFFSET,
JOIN, JOIN_TYPE_INNER, JOIN_TYPE_LEFT_OUTER, JOIN_TYPE_RIGHT_OUTER, JOIN_TYPE_FULL_OUTER, JOIN_CONDITION_EQUI);
builder.addPredicate(AND, OR, NOT, EQUAL, NOTEQUAL, LESS, LESSEQUAL, LIKE, LIKE_ESCAPE, REGEXP_LIKE, BETWEEN,
IN_CONSTLIST, IS_NULL, IS_NOT_NULL);
builder.addLiteral(NULL, DATE, TIMESTAMP, TIMESTAMP_UTC, DOUBLE, EXACTNUMERIC, STRING, INTERVAL);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,27 @@ void fullOuterJoin() throws SQLException {
assertFalse(result.next());
}

@Test
void rightJoinWithComplexCondition() throws SQLException {
final String query = String.format(
"SELECT * FROM %1$s.t1 a RIGHT OUTER JOIN %1$s.t2 b ON a.x||a.y=b.x||b.y ORDER BY a.x", VIRTUAL_SCHEMA_JDBC);
final ResultSet result = executeQuery(query);
matchNextRow(result, "2", "bbb", "2", "bbb");
matchNextRow(result, null, null, "3", "ccc");
assertFalse(result.next());
}

@Test
void fullOuterJoinWithComplexCondition() throws SQLException {
final String query = String.format(
"SELECT * FROM %1$s.t1 a FULL OUTER JOIN %1$s.t2 b ON a.x-b.x=0 ORDER BY a.x", VIRTUAL_SCHEMA_ORA);
final ResultSet result = executeQuery(query);
matchNextRow(result, "1", "aaa", null, null);
matchNextRow(result, "2", "bbb", "2", "bbb");
matchNextRow(result, null, null, "3", "ccc");
assertFalse(result.next());
}

// Type Tests -------------------------------------------------------------
@Test
void testColumnTypeEquivalence() throws SQLException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ void testGetCapabilities() {
containsInAnyOrder(SELECTLIST_PROJECTION, SELECTLIST_EXPRESSIONS, FILTER_EXPRESSIONS,
AGGREGATE_SINGLE_GROUP, AGGREGATE_GROUP_BY_COLUMN, AGGREGATE_GROUP_BY_EXPRESSION,
AGGREGATE_GROUP_BY_TUPLE, AGGREGATE_HAVING, ORDER_BY_COLUMN, ORDER_BY_EXPRESSION, LIMIT,
LIMIT_WITH_OFFSET)), //
LIMIT_WITH_OFFSET, JOIN, JOIN_TYPE_INNER, JOIN_TYPE_LEFT_OUTER, JOIN_TYPE_RIGHT_OUTER,
JOIN_TYPE_FULL_OUTER, JOIN_CONDITION_EQUI)), //
() -> assertThat(capabilities.getLiteralCapabilities(),
containsInAnyOrder(NULL, DATE, TIMESTAMP, TIMESTAMP_UTC, DOUBLE, EXACTNUMERIC, STRING,
INTERVAL)),
Expand Down

0 comments on commit 99479c1

Please sign in to comment.