Program: 31276
Project: 31276
Buggy source:
@Test public void testOuterHashJoin() throws Exception {
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.commit();
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.commit();
  StringSink sink=new StringSink();
  RecordSourcePrinter p=new RecordSourcePrinter(sink);
  RecordSource joinResult=new SelectedColumnsRecordSource(new HashJoinRecordSource(new JournalSource(new JournalPartitionSource(bw.getMetadata(),false),new AllRowSource()),new IntList(){
{
      add(bw.getMetadata().getColumnIndex("String_Node_Str"));
    }
  }
,new JournalSource(new JournalPartitionSource(aw.getMetadata(),false),new AllRowSource()),new IntList(){
{
      add(aw.getMetadata().getColumnIndex("String_Node_Str"));
    }
  }
,true,4 * 1024 * 1024,4 * 1024 * 1024,1024 * 1024),new ObjList<CharSequence>(){
{
      add("String_Node_Str");
      add("String_Node_Str");
    }
  }
);
  p.printCursor(joinResult,factory);
  Assert.assertEquals("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",sink.toString());
}

Fixed version (ground truth):
@Test public void testOuterHashJoin() throws Exception {
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.append(new Band().setName("String_Node_Str").setType("String_Node_Str").setUrl("String_Node_Str"));
  bw.commit();
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.append(new Album().setName("String_Node_Str").setBand("String_Node_Str").setGenre("String_Node_Str"));
  aw.commit();
  StringSink sink=new StringSink();
  RecordSourcePrinter p=new RecordSourcePrinter(sink);
  RecordSource joinResult=new SelectedColumnsRecordSource(new HashJoinRecordSource(new JournalSource(new JournalPartitionSource(bw.getMetadata(),false),new AllRowSource()),new IntList(){
{
      add(bw.getMetadata().getColumnIndex("String_Node_Str"));
    }
  }
,new JournalSource(new JournalPartitionSource(aw.getMetadata(),false),new AllRowSource()),new IntList(){
{
      add(aw.getMetadata().getColumnIndex("String_Node_Str"));
    }
  }
,true,4 * 1024 * 1024,4 * 1024 * 1024,1024 * 1024),new ObjList<CharSequence>(){
{
      add("String_Node_Str");
      add("String_Node_Str");
    }
  }
);
  p.print(joinResult,factory);
  Assert.assertEquals("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str",sink.toString());
}