Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1059#discussion_r158593827
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/join/TestMergeJoinAdvanced.java
 ---
    @@ -253,4 +259,52 @@ public void testDrill4196() throws Exception {
           .baselineValues(6000*800L)
           .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 testMergeLeftJoinWithEmptyTable() 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 testMergeInnerJoinWithEmptyTable() 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 testMergeRightJoinWithEmptyTable() 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 --
    
    Suggestion: this is the sixth copy of basically the same test, with only 
the query text differing. Again, duplicate code is costly and is to be avoided. 
Now, once the tests convert to using a single server, most of the code here 
will disappear. More will disappear if the test file is created once. 
Otherwise, it would be better to define a test function, then simply have each 
test call the test function with the required statement.


---

Reply via email to