Program: 33636
Project: 33636
Buggy source:
@Test public void twoProjectsJoinedAndSelectTest() throws UnsupportedException, ExecutionException {
  List<LogicalStep> stepList=new LinkedList<>();
  Project projectLeft=createProject(CASSANDRA_CLUSTERNAME_CONSTANT,KEYSPACE,MYTABLE1_CONSTANT,Arrays.asList(ARTIST_CONSTANT,DESCRIPTION_CONSTANT,TITLE_CONSTANT,YEAR_CONSTANT));
  Project projectRight=createProject(CASSANDRA_CLUSTERNAME_CONSTANT,KEYSPACE,MYTABLE2_CONSTANT,Arrays.asList(ARTIST_CONSTANT,AGE_CONSTANT));
  Join join=createJoin("String_Node_Str",createColumn(KEYSPACE,MYTABLE1_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,ARTIST_CONSTANT));
  join.setNextStep(createSelect(Arrays.asList(createColumn(KEYSPACE,MYTABLE1_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,AGE_CONSTANT),createColumn(KEYSPACE,MYTABLE1_CONSTANT,DESCRIPTION_CONSTANT)),Arrays.asList(ARTIST_ALIAS_CONSTANT,ARTIST_ALIAS2_CONSTANT,DESCRIPTION_ALIAS_CONSTANT,AGE_ALIAS_CONSTANT)));
  projectLeft.setNextStep(join);
  projectRight.setNextStep(join);
  stepList.add(projectLeft);
  stepList.add(projectRight);
  LogicalWorkflow logicalWorkflow=new LogicalWorkflow(stepList);
  QueryResult result=deepQueryEngine.execute(logicalWorkflow);
  List<ColumnMetadata> columnsMetadata=result.getResultSet().getColumnMetadata();
  List<Row> rowsList=result.getResultSet().getRows();
  assertEquals("String_Node_Str",4,columnsMetadata.size());
  assertEquals("String_Node_Str",74,rowsList.size());
  assertEquals("String_Node_Str",ARTIST_ALIAS_CONSTANT,columnsMetadata.get(0).getColumnAlias());
  assertEquals("String_Node_Str",ARTIST_ALIAS2_CONSTANT,columnsMetadata.get(1).getColumnAlias());
  assertEquals("String_Node_Str",DESCRIPTION_ALIAS_CONSTANT,columnsMetadata.get(2).getColumnAlias());
  assertEquals("String_Node_Str",AGE_ALIAS_CONSTANT,columnsMetadata.get(3).getColumnAlias());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE1_CONSTANT,columnsMetadata.get(0).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE2_CONSTANT,columnsMetadata.get(1).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE2_CONSTANT,columnsMetadata.get(2).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE1_CONSTANT,columnsMetadata.get(3).getTableName());
  for (  Row row : rowsList) {
    assertEquals("String_Node_Str",4,row.size());
    assertNotNull("String_Node_Str",row.getCell(ARTIST_ALIAS_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(ARTIST_ALIAS2_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(DESCRIPTION_ALIAS_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(AGE_ALIAS_CONSTANT));
  }
}

Fixed version (ground truth):
@Test public void twoProjectsJoinedAndSelectTest() throws UnsupportedException, ExecutionException {
  List<LogicalStep> stepList=new LinkedList<>();
  Project projectLeft=createProject(CASSANDRA_CLUSTERNAME_CONSTANT,KEYSPACE,MYTABLE1_CONSTANT,Arrays.asList(ARTIST_CONSTANT,DESCRIPTION_CONSTANT,TITLE_CONSTANT,YEAR_CONSTANT));
  Project projectRight=createProject(CASSANDRA_CLUSTERNAME_CONSTANT,KEYSPACE,MYTABLE2_CONSTANT,Arrays.asList(ARTIST_CONSTANT,AGE_CONSTANT));
  Join join=createJoin("String_Node_Str",createColumn(KEYSPACE,MYTABLE1_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,ARTIST_CONSTANT));
  join.setNextStep(createSelect(Arrays.asList(createColumn(KEYSPACE,MYTABLE1_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,ARTIST_CONSTANT),createColumn(KEYSPACE,MYTABLE2_CONSTANT,AGE_CONSTANT),createColumn(KEYSPACE,MYTABLE1_CONSTANT,DESCRIPTION_CONSTANT)),Arrays.asList(ARTIST_ALIAS_CONSTANT,ARTIST_ALIAS2_CONSTANT,DESCRIPTION_ALIAS_CONSTANT,AGE_ALIAS_CONSTANT)));
  projectLeft.setNextStep(join);
  projectRight.setNextStep(join);
  stepList.add(projectLeft);
  stepList.add(projectRight);
  LogicalWorkflow logicalWorkflow=new LogicalWorkflow(stepList);
  QueryResult result=deepQueryEngine.execute(logicalWorkflow);
  List<ColumnMetadata> columnsMetadata=result.getResultSet().getColumnMetadata();
  List<Row> rowsList=result.getResultSet().getRows();
  assertEquals("String_Node_Str",4,columnsMetadata.size());
  assertEquals("String_Node_Str",72,rowsList.size());
  assertEquals("String_Node_Str",ARTIST_ALIAS_CONSTANT,columnsMetadata.get(0).getColumnAlias());
  assertEquals("String_Node_Str",ARTIST_ALIAS2_CONSTANT,columnsMetadata.get(1).getColumnAlias());
  assertEquals("String_Node_Str",DESCRIPTION_ALIAS_CONSTANT,columnsMetadata.get(2).getColumnAlias());
  assertEquals("String_Node_Str",AGE_ALIAS_CONSTANT,columnsMetadata.get(3).getColumnAlias());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE1_CONSTANT,columnsMetadata.get(0).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE2_CONSTANT,columnsMetadata.get(1).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE2_CONSTANT,columnsMetadata.get(2).getTableName());
  assertEquals("String_Node_Str",KEYSPACE + "String_Node_Str" + MYTABLE1_CONSTANT,columnsMetadata.get(3).getTableName());
  for (  Row row : rowsList) {
    assertEquals("String_Node_Str",4,row.size());
    assertNotNull("String_Node_Str",row.getCell(ARTIST_ALIAS_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(ARTIST_ALIAS2_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(DESCRIPTION_ALIAS_CONSTANT));
    assertNotNull("String_Node_Str",row.getCell(AGE_ALIAS_CONSTANT));
  }
}