Program: 75974
Project: 75974
Buggy source:
/** 
 * @param startValue
 * @throws Exception
 * @throws IOException
 */
private void groupOnMonthWithCache(Object startValue) throws Exception, IOException {
  String[] bindingNameGroup=new String[1];
  bindingNameGroup[0]="String_Node_Str";
  IBaseExpression[] bindingExprGroup=new IBaseExpression[1];
  bindingExprGroup[0]=new ScriptExpression("String_Node_Str");
  GroupDefinition[] groupDefn=new GroupDefinition[]{new GroupDefinition("String_Node_Str")};
  groupDefn[0].setKeyExpression("String_Node_Str");
  groupDefn[0].setInterval(IGroupDefinition.MONTH_INTERVAL);
  if (startValue != null)   groupDefn[0].setIntervalStart(startValue);
  groupDefn[0].setIntervalRange(1);
  String[] bindingNameRow=new String[4];
  bindingNameRow[0]="String_Node_Str";
  bindingNameRow[1]="String_Node_Str";
  bindingNameRow[2]="String_Node_Str";
  bindingNameRow[3]="String_Node_Str";
  IBaseExpression[] bindingExprRow=new IBaseExpression[4];
  bindingExprRow[0]=new ScriptExpression("String_Node_Str");
  bindingExprRow[1]=new ScriptExpression("String_Node_Str");
  bindingExprRow[2]=new ScriptExpression("String_Node_Str");
  bindingExprRow[3]=new ScriptExpression("String_Node_Str");
  String[] columnStr=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  QueryDefinition qd=this.createQuery(bindingNameGroup,bindingExprGroup,groupDefn,null,null,null,null,null,null,bindingNameRow,bindingExprRow);
  qd.setNeedCache(true);
  String outputStr=getOutputStrForGroupTestWithCache(30,qd,groupDefn.length,bindingNameRow,columnStr);
  testPrint(outputStr);
  this.checkOutputFile();
}

Fixed version (ground truth):
/** 
 * @param startValue
 * @throws Exception
 * @throws IOException
 */
private void groupOnMonthWithCache(Object startValue) throws Exception, IOException {
  String[] bindingNameGroup=new String[1];
  bindingNameGroup[0]="String_Node_Str";
  IBaseExpression[] bindingExprGroup=new IBaseExpression[1];
  bindingExprGroup[0]=new ScriptExpression("String_Node_Str");
  GroupDefinition[] groupDefn=new GroupDefinition[]{new GroupDefinition("String_Node_Str")};
  groupDefn[0].setKeyExpression("String_Node_Str");
  groupDefn[0].setInterval(IGroupDefinition.MONTH_INTERVAL);
  if (startValue != null)   groupDefn[0].setIntervalStart(startValue);
  groupDefn[0].setIntervalRange(1);
  String[] bindingNameRow=new String[4];
  bindingNameRow[0]="String_Node_Str";
  bindingNameRow[1]="String_Node_Str";
  bindingNameRow[2]="String_Node_Str";
  bindingNameRow[3]="String_Node_Str";
  IBaseExpression[] bindingExprRow=new IBaseExpression[4];
  bindingExprRow[0]=new ScriptExpression("String_Node_Str");
  bindingExprRow[1]=new ScriptExpression("String_Node_Str");
  bindingExprRow[2]=new ScriptExpression("String_Node_Str");
  bindingExprRow[3]=new ScriptExpression("String_Node_Str");
  String[] columnStr=new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"};
  QueryDefinition qd=this.createQuery(bindingNameGroup,bindingExprGroup,groupDefn,null,null,null,null,null,null,bindingNameRow,bindingExprRow);
  qd.setCacheQueryResults(true);
  String outputStr=getOutputStrForGroupTestWithCache(30,qd,groupDefn.length,bindingNameRow,columnStr);
  testPrint(outputStr);
  this.checkOutputFile();
}