Program: 66080
Project: 66080
Buggy source:
public void testIVWithIncrementSorts() throws Exception {
  ICubeQueryDefinition cqd=new CubeQueryDefinition(cubeName);
  IEdgeDefinition columnEdge=cqd.createEdge(ICubeQueryDefinition.COLUMN_EDGE);
  IEdgeDefinition rowEdge=cqd.createEdge(ICubeQueryDefinition.ROW_EDGE);
  IDimensionDefinition dim1=columnEdge.createDimension("String_Node_Str");
  IHierarchyDefinition hier1=dim1.createHierarchy("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  IDimensionDefinition dim2=rowEdge.createDimension("String_Node_Str");
  IHierarchyDefinition hier2=dim2.createHierarchy("String_Node_Str");
  hier2.createLevel("String_Node_Str");
  cqd.createMeasure("String_Node_Str");
  IBinding binding1=new Binding("String_Node_Str");
  binding1.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding1);
  IBinding binding2=new Binding("String_Node_Str");
  binding2.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding2);
  IBinding binding3=new Binding("String_Node_Str");
  binding3.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding3);
  IBinding binding4=new Binding("String_Node_Str");
  binding4.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding4);
  IBinding binding5=new Binding("String_Node_Str");
  binding5.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding5);
  FileArchiveWriter writter=new FileArchiveWriter(documentPath + "String_Node_Str");
  DataEngineContext context=DataEngineContext.newInstance(DataEngineContext.MODE_GENERATION,null,null,writter);
  context.setTmpdir(this.getTempDir());
  DataEngineImpl engine=(DataEngineImpl)DataEngine.newDataEngine(context);
  this.createCube(writter,engine);
  IPreparedCubeQuery pcq=engine.prepare(cqd,null);
  ICubeQueryResults queryResults=pcq.execute(null);
  CubeCursor cursor=queryResults.getCubeCursor();
  writter.flush();
  writter.finish();
  engine.shutdown();
  List columnEdgeBindingNames=new ArrayList();
  columnEdgeBindingNames.add("String_Node_Str");
  columnEdgeBindingNames.add("String_Node_Str");
  columnEdgeBindingNames.add("String_Node_Str");
  FileArchiveReader reader=new FileArchiveReader(documentPath + "String_Node_Str");
  ArchiveWriter writer=new ArchiveWriter(new ArchiveFile(documentPath + "String_Node_Str","String_Node_Str"));
  ICubeQueryDefinition savedQuery=CubeQueryDefinitionIOUtil.load(queryResults.getID(),reader);
  engine=(DataEngineImpl)DataEngine.newDataEngine(DataEngineContext.newInstance(DataEngineContext.MODE_UPDATE,null,reader,writer));
  cqd.setQueryResultsID(queryResults.getID());
  CubeSortDefinition csd=new CubeSortDefinition();
  csd.setSortDirection(ISortDefinition.SORT_DESC);
  csd.setExpression(new ScriptExpression("String_Node_Str"));
  csd.setTargetLevel(dim2.getHierarchy().get(0).getLevels().get(0));
  cqd.addSort(csd);
  IncrementExecutionHint ieh=CubeQueryDefinitionUtil.getIncrementExecutionHint(savedQuery,cqd);
  assertTrue(ieh != null);
  assertEquals(0,ieh.getBindings().length);
  assertEquals(0,ieh.getFilters().length);
  assertEquals(1,ieh.getSorts().length);
  pcq=engine.prepare(cqd,null);
  queryResults=pcq.execute(null);
  cursor=queryResults.getCubeCursor();
  reader.close();
  writer.finish();
  engine.shutdown();
  reader=new FileArchiveReader(documentPath + "String_Node_Str");
  engine=(DataEngineImpl)DataEngine.newDataEngine(DataEngineContext.newInstance(DataEngineContext.MODE_PRESENTATION,null,reader,null));
  cqd.setQueryResultsID(queryResults.getID());
  pcq=engine.prepare(cqd,null);
  queryResults=pcq.execute(null);
  cursor=queryResults.getCubeCursor();
  this.printCube(cursor,columnEdgeBindingNames,"String_Node_Str","String_Node_Str");
  reader.close();
  engine.shutdown();
}

Fixed version (ground truth):
public void testIVWithIncrementSorts() throws Exception {
  ICubeQueryDefinition cqd=new CubeQueryDefinition(cubeName);
  IEdgeDefinition columnEdge=cqd.createEdge(ICubeQueryDefinition.COLUMN_EDGE);
  IEdgeDefinition rowEdge=cqd.createEdge(ICubeQueryDefinition.ROW_EDGE);
  IDimensionDefinition dim1=columnEdge.createDimension("String_Node_Str");
  IHierarchyDefinition hier1=dim1.createHierarchy("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  hier1.createLevel("String_Node_Str");
  IDimensionDefinition dim2=rowEdge.createDimension("String_Node_Str");
  IHierarchyDefinition hier2=dim2.createHierarchy("String_Node_Str");
  hier2.createLevel("String_Node_Str");
  cqd.createMeasure("String_Node_Str");
  IBinding binding1=new Binding("String_Node_Str");
  binding1.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding1);
  IBinding binding2=new Binding("String_Node_Str");
  binding2.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding2);
  IBinding binding3=new Binding("String_Node_Str");
  binding3.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding3);
  IBinding binding4=new Binding("String_Node_Str");
  binding4.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding4);
  IBinding binding5=new Binding("String_Node_Str");
  binding5.setExpression(new ScriptExpression("String_Node_Str"));
  cqd.addBinding(binding5);
  FileArchiveWriter writter=new FileArchiveWriter(documentPath + "String_Node_Str");
  DataEngineContext context=DataEngineContext.newInstance(DataEngineContext.MODE_GENERATION,null,null,writter);
  context.setTmpdir(this.getTempDir());
  DataEngineImpl engine=(DataEngineImpl)DataEngine.newDataEngine(context);
  this.createCube(writter,engine);
  IPreparedCubeQuery pcq=engine.prepare(cqd,null);
  ICubeQueryResults queryResults=pcq.execute(null);
  CubeCursor cursor=queryResults.getCubeCursor();
  writter.flush();
  writter.finish();
  engine.shutdown();
  List columnEdgeBindingNames=new ArrayList();
  columnEdgeBindingNames.add("String_Node_Str");
  columnEdgeBindingNames.add("String_Node_Str");
  columnEdgeBindingNames.add("String_Node_Str");
  FileArchiveReader reader=new FileArchiveReader(documentPath + "String_Node_Str");
  ArchiveWriter writer=new ArchiveWriter(new ArchiveFile(documentPath + "String_Node_Str","String_Node_Str"));
  ICubeQueryDefinition savedQuery=CubeQueryDefinitionIOUtil.load(queryResults.getID(),DataEngineContext.newInstance(DataEngineContext.MODE_UPDATE,null,reader,writer));
  engine=(DataEngineImpl)DataEngine.newDataEngine(DataEngineContext.newInstance(DataEngineContext.MODE_UPDATE,null,reader,writer));
  cqd.setQueryResultsID(queryResults.getID());
  CubeSortDefinition csd=new CubeSortDefinition();
  csd.setSortDirection(ISortDefinition.SORT_DESC);
  csd.setExpression(new ScriptExpression("String_Node_Str"));
  csd.setTargetLevel(dim2.getHierarchy().get(0).getLevels().get(0));
  cqd.addSort(csd);
  IncrementExecutionHint ieh=CubeQueryDefinitionUtil.getIncrementExecutionHint(savedQuery,cqd);
  assertTrue(ieh != null);
  assertEquals(0,ieh.getBindings().length);
  assertEquals(0,ieh.getFilters().length);
  assertEquals(1,ieh.getSorts().length);
  pcq=engine.prepare(cqd,null);
  queryResults=pcq.execute(null);
  cursor=queryResults.getCubeCursor();
  reader.close();
  writer.finish();
  engine.shutdown();
  reader=new FileArchiveReader(documentPath + "String_Node_Str");
  engine=(DataEngineImpl)DataEngine.newDataEngine(DataEngineContext.newInstance(DataEngineContext.MODE_PRESENTATION,null,reader,null));
  cqd.setQueryResultsID(queryResults.getID());
  pcq=engine.prepare(cqd,null);
  queryResults=pcq.execute(null);
  cursor=queryResults.getCubeCursor();
  this.printCube(cursor,columnEdgeBindingNames,"String_Node_Str","String_Node_Str");
  reader.close();
  engine.shutdown();
}