Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/1059#discussion_r158593793
--- Diff:
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinAdvanced.java
---
@@ -160,4 +166,51 @@ public void testJoinWithMapAndDotField() throws
Exception {
.baselineValues("1", "2", "1", null, "a")
.go();
}
+
+ private void buildFile(String fileName, String[] data, File testDir)
throws IOException {
+ try(PrintWriter out = new PrintWriter(new FileWriter(new File(testDir,
fileName)))) {
+ for (String line : data) {
+ out.println(line);
+ }
+ }
+ }
+
+ @Test
+ public void testHashLeftJoinWithEmptyTable() throws Exception {
+ try (ClusterFixture cluster =
ClusterFixture.builder(dirTestWatcher).build();
+ ClientFixture client = cluster.clientFixture()) {
+ File testDir = dirTestWatcher.getRootDir();
+ buildFile("dept.json", new String[0], testDir);
+ QueryBuilder query = client.queryBuilder().sql("select * from
cp.`employee.json` emp left outer join dfs.`dept.json` as dept on dept.manager
= emp.`last_name`");
+ assert(query.run().recordCount() == 1155);
+ } catch (RuntimeException ex) {
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void testHashInnerJoinWithEmptyTable() throws Exception {
+ try (ClusterFixture cluster =
ClusterFixture.builder(dirTestWatcher).build();
+ ClientFixture client = cluster.clientFixture()) {
+ File testDir = dirTestWatcher.getRootDir();
+ buildFile("dept.json", new String[0], testDir);
+ QueryBuilder query = client.queryBuilder().sql("select * from
cp.`employee.json` emp inner join dfs.`dept.json` as dept on dept.manager =
emp.`last_name`");
+ assert(query.run().recordCount() == 0);
+ } catch (RuntimeException ex) {
+ fail(ex.getMessage());
+ }
+ }
+
+ @Test
+ public void testHashRightJoinWithEmptyTable() throws Exception {
+ try (ClusterFixture cluster =
ClusterFixture.builder(dirTestWatcher).build();
+ ClientFixture client = cluster.clientFixture()) {
+ File testDir = dirTestWatcher.getRootDir();
+ buildFile("dept.json", new String[0], testDir);
+ QueryBuilder query = client.queryBuilder().sql("select * from
cp.`employee.json` emp right outer join dfs.`dept.json` as dept on dept.manager
= emp.`last_name`");
+ assert(query.run().recordCount() == 0);
+ } catch (RuntimeException ex) {
+ fail(ex.getMessage());
--- End diff --
Not really necessary to catch the exception. Just let the test throw it.
JUnit will mark the test as failed if it throws an exception.
---