Program: 95939
Project: 95939
Buggy source:
/** 
 * Replace the scaled select list with original select list
 * @param queryToReplace, aggMeta
 * @return replaced original select list
 */
SelectQuery replaceWithOriginalSelectList(SelectQuery queryToReplace,AggMeta aggMeta){
  List<SelectItem> originalSelectList=aggMeta.getOriginalSelectList();
  Map<SelectItem,List<ColumnOp>> aggColumn=aggMeta.getAggColumn();
  HashMap<String,UnnamedColumn> aggContents=new HashMap<>();
  for (  SelectItem sel : queryToReplace.getSelectList()) {
    if (sel instanceof AliasedColumn && aggMeta.getAggAlias().contains(((AliasedColumn)sel).getAliasName())) {
      aggContents.put(((AliasedColumn)sel).getAliasName(),((AliasedColumn)sel).getColumn());
    }
 else     if (sel instanceof AliasedColumn && aggMeta.getMaxminAggAlias().keySet().contains(((AliasedColumn)sel).getAliasName())) {
      aggContents.put(((AliasedColumn)sel).getAliasName(),((AliasedColumn)sel).getColumn());
    }
  }
  for (  SelectItem sel : originalSelectList) {
    if (aggColumn.containsKey(sel)) {
      List<ColumnOp> columnOps=aggColumn.get(sel);
      for (      ColumnOp col : columnOps) {
        if (col.getOpType().equals("String_Node_Str") || col.getOpType().equals("String_Node_Str")) {
          String aliasName;
          if (col.getOpType().equals("String_Node_Str")) {
            aliasName=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>(col.getOpType(),(UnnamedColumn)new AsteriskColumn()));
          }
 else           aliasName=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>(col.getOpType(),col.getOperand(0)));
          ColumnOp aggContent=(ColumnOp)aggContents.get(aliasName);
          col.setOpType(aggContent.getOpType());
          col.setOperand(aggContent.getOperands());
        }
 else         if (col.getOpType().equals("String_Node_Str") || col.getOpType().equals("String_Node_Str")) {
          String aliasName=aggMeta.getAggColumnAggAliasPairOfMaxMin().get(new ImmutablePair<>(col.getOpType(),col.getOperand(0)));
          if (aggContents.get(aliasName) instanceof BaseColumn) {
            BaseColumn aggContent=(BaseColumn)aggContents.get(aliasName);
            col.setOpType("String_Node_Str");
            col.setOperand(Arrays.asList(ConstantColumn.valueOf(1),aggContent));
          }
 else {
            ColumnOp aggContent=(ColumnOp)aggContents.get(aliasName);
            col.setOpType(aggContent.getOpType());
            col.setOperand(aggContent.getOperands());
          }
        }
 else         if (col.getOpType().equals("String_Node_Str")) {
          String aliasNameSum=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>("String_Node_Str",col.getOperand(0)));
          ColumnOp aggContentSum=(ColumnOp)aggContents.get(aliasNameSum);
          String aliasNameCount=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>("String_Node_Str",(UnnamedColumn)new AsteriskColumn()));
          ColumnOp aggContentCount=(ColumnOp)aggContents.get(aliasNameCount);
          col.setOpType("String_Node_Str");
          col.setOperand(Arrays.<UnnamedColumn>asList(aggContentSum,aggContentCount));
        }
      }
    }
 else     if (sel instanceof AliasedColumn) {
      ((AliasedColumn)sel).setColumn(new BaseColumn(TIER_CONSOLIDATED_TABLE_ALIAS,((AliasedColumn)sel).getAliasName()));
      ((AliasedColumn)sel).setAliasName(((AliasedColumn)sel).getAliasName());
    }
  }
  queryToReplace.clearSelectList();
  queryToReplace.getSelectList().addAll(originalSelectList);
  return queryToReplace;
}

Fixed version (ground truth):
/** 
 * Replace the scaled select list with original select list
 * @param queryToReplace, aggMeta
 * @return replaced original select list
 */
private SelectQuery replaceWithOriginalSelectList(SelectQuery queryToReplace,AggMeta aggMeta){
  List<SelectItem> originalSelectList=aggMeta.getOriginalSelectList();
  Map<SelectItem,List<ColumnOp>> aggColumn=aggMeta.getAggColumn();
  HashMap<String,UnnamedColumn> aggContents=new HashMap<>();
  for (  SelectItem sel : queryToReplace.getSelectList()) {
    if (sel instanceof AliasedColumn && aggMeta.getAggAlias().contains(((AliasedColumn)sel).getAliasName())) {
      aggContents.put(((AliasedColumn)sel).getAliasName(),((AliasedColumn)sel).getColumn());
    }
 else     if (sel instanceof AliasedColumn && aggMeta.getMaxminAggAlias().keySet().contains(((AliasedColumn)sel).getAliasName())) {
      aggContents.put(((AliasedColumn)sel).getAliasName(),((AliasedColumn)sel).getColumn());
    }
  }
  for (  SelectItem sel : originalSelectList) {
    if (aggColumn.containsKey(sel)) {
      List<ColumnOp> columnOps=aggColumn.get(sel);
      for (      ColumnOp col : columnOps) {
        if (col.getOpType().equals("String_Node_Str") || col.getOpType().equals("String_Node_Str")) {
          String aliasName;
          if (col.getOpType().equals("String_Node_Str")) {
            aliasName=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>(col.getOpType(),(UnnamedColumn)new AsteriskColumn()));
          }
 else           aliasName=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>(col.getOpType(),col.getOperand(0)));
          ColumnOp aggContent=(ColumnOp)aggContents.get(aliasName);
          col.setOpType(aggContent.getOpType());
          col.setOperand(aggContent.getOperands());
        }
 else         if (col.getOpType().equals("String_Node_Str") || col.getOpType().equals("String_Node_Str")) {
          String aliasName=aggMeta.getAggColumnAggAliasPairOfMaxMin().get(new ImmutablePair<>(col.getOpType(),col.getOperand(0)));
          if (aggContents.get(aliasName) instanceof BaseColumn) {
            BaseColumn aggContent=(BaseColumn)aggContents.get(aliasName);
            col.setOpType("String_Node_Str");
            col.setOperand(Arrays.asList(ConstantColumn.valueOf(1),aggContent));
          }
 else {
            ColumnOp aggContent=(ColumnOp)aggContents.get(aliasName);
            col.setOpType(aggContent.getOpType());
            col.setOperand(aggContent.getOperands());
          }
        }
 else         if (col.getOpType().equals("String_Node_Str")) {
          String aliasNameSum=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>("String_Node_Str",col.getOperand(0)));
          ColumnOp aggContentSum=(ColumnOp)aggContents.get(aliasNameSum);
          String aliasNameCount=aggMeta.getAggColumnAggAliasPair().get(new ImmutablePair<>("String_Node_Str",(UnnamedColumn)new AsteriskColumn()));
          ColumnOp aggContentCount=(ColumnOp)aggContents.get(aliasNameCount);
          col.setOpType("String_Node_Str");
          col.setOperand(Arrays.<UnnamedColumn>asList(aggContentSum,aggContentCount));
        }
      }
    }
 else     if (sel instanceof AliasedColumn) {
      ((AliasedColumn)sel).setColumn(new BaseColumn(TIER_CONSOLIDATED_TABLE_ALIAS,((AliasedColumn)sel).getAliasName()));
      ((AliasedColumn)sel).setAliasName(((AliasedColumn)sel).getAliasName());
    }
  }
  queryToReplace.clearSelectList();
  queryToReplace.getSelectList().addAll(originalSelectList);
  return queryToReplace;
}