Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/1059#discussion_r155939428 --- Diff: exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestHashJoinAdvanced.java --- @@ -160,4 +166,75 @@ 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 { + ClusterFixtureBuilder builder = ClusterFixture.builder(dirTestWatcher); + File testDir = null; + try { + ClusterFixture cluster = builder.build(); + ClientFixture client = cluster.clientFixture(); + testDir = dirTestWatcher.getTmpDir(); + cluster.defineWorkspace("dfs", "data", testDir.getAbsolutePath(), "json"); + buildFile("dept.json", new String[0], testDir); + QueryBuilder query = client.queryBuilder().sql("select * from cp.`employee.json` emp left outer join dfs.data.`dept.json` as dept on dept.manager = emp.`last_name`"); + assert(query.futureSummary().get().recordCount() == 1155); + } catch (RuntimeException ex) { + throw ex; + } finally { + if (testDir != null) { + testDir.delete(); --- End diff -- I think the whole point of the dir test watcher is that it will do this cleanup.
---