Skip to content

Commit

Permalink
#151: fixed review findings
Browse files Browse the repository at this point in the history
  • Loading branch information
snehlsen committed May 7, 2019
1 parent 9d199c0 commit 251d57c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,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,
JOIN, JOIN_TYPE_INNER, JOIN_TYPE_LEFT_OUTER, JOIN_TYPE_RIGHT_OUTER, JOIN_TYPE_FULL_OUTER, JOIN_CONDITION_EQUI);
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, BETWEEN, REGEXP_LIKE,
IN_CONSTLIST, IS_NULL, IS_NOT_NULL);
builder.addLiteral(BOOL, NULL, DATE, TIMESTAMP, TIMESTAMP_UTC, DOUBLE, EXACTNUMERIC, STRING);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertAll;

import java.io.FileNotFoundException;
import java.math.BigDecimal;
Expand Down Expand Up @@ -231,72 +232,67 @@ void testSelectSingleColumn() throws SQLException {

// Join Tests -------------------------------------------------------------
@Test
void innerJoin() throws SQLException {
final String query = String.format("SELECT * FROM %1$s.t1 a INNER JOIN %1$s.t2 b ON a.x=b.x", VIRTUAL_SCHEMA);
void testInnerJoin() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a INNER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x=b.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb"), () -> assertFalse(result.next()));
}

@Test
void innerJoinWithProjection() throws SQLException {
final String query = String
.format("SELECT b.y || %1$s.t1.y FROM %1$s.t1 INNER JOIN %1$s.t2 b ON %1$s.t1.x=b.x", VIRTUAL_SCHEMA);
void testInnerJoinWithProjection() throws SQLException {
final String query = "SELECT b.y || " + VIRTUAL_SCHEMA + ".t1.y FROM " + VIRTUAL_SCHEMA + ".t1 INNER JOIN "
+ VIRTUAL_SCHEMA + ".t2 b ON " + VIRTUAL_SCHEMA + ".t1.x=b.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, "bbbbbb");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, "bbbbbb"), () -> assertFalse(result.next()));
}

@Test
void leftJoin() throws SQLException {
final String query = String
.format("SELECT * FROM %1$s.t1 a LEFT OUTER JOIN %1$s.t2 b ON a.x=b.x ORDER BY a.x", VIRTUAL_SCHEMA);
void testLeftJoin() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a LEFT OUTER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x=b.x ORDER BY a.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 1, "aaa", null, null);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
assertFalse(result.next());
}

@Test
void rightJoin() throws SQLException {
final String query = String
.format("SELECT * FROM %1$s.t1 a RIGHT OUTER JOIN %1$s.t2 b ON a.x=b.x ORDER BY a.x", VIRTUAL_SCHEMA);
void testRightJoin() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a RIGHT OUTER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x=b.x ORDER BY a.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
matchNextRow(result, null, null, (long) 3, "ccc");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb"),
() -> matchNextRow(result, null, null, (long) 3, "ccc"), () -> assertFalse(result.next()));
}

@Test
void fullOuterJoin() 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 ORDER BY a.x", VIRTUAL_SCHEMA);
void testFullOuterJoin() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a FULL OUTER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x=b.x ORDER BY a.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 1, "aaa", null, null);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
matchNextRow(result, null, null, (long) 3, "ccc");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, (long) 1, "aaa", null, null),
() -> matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb"),
() -> matchNextRow(result, null, null, (long) 3, "ccc"), () -> 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);
void testRightJoinWithComplexCondition() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a RIGHT OUTER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x||a.y=b.x||b.y ORDER BY a.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
matchNextRow(result, null, null, (long) 3, "ccc");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb"),
() -> matchNextRow(result, null, null, (long) 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);
void testFullOuterJoinWithComplexCondition() throws SQLException {
final String query = "SELECT * FROM " + VIRTUAL_SCHEMA + ".t1 a FULL OUTER JOIN " + VIRTUAL_SCHEMA
+ ".t2 b ON a.x-b.x=0 ORDER BY a.x";
final ResultSet result = executeQuery(query);
matchNextRow(result, (long) 1, "aaa", null, null);
matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb");
matchNextRow(result, null, null, (long) 3, "ccc");
assertFalse(result.next());
assertAll(() -> matchNextRow(result, (long) 1, "aaa", null, null),
() -> matchNextRow(result, (long) 2, "bbb", (long) 2, "bbb"),
() -> matchNextRow(result, null, null, (long) 3, "ccc"), () -> assertFalse(result.next()));
}

// Identifier Test - CONVERT_TO_UPPER mode --------------------------------
Expand Down

0 comments on commit 251d57c

Please sign in to comment.