Program: 121899
Project: 121899
Buggy source:
/** 
 * DOC ggu Comment method "syncNodePropertiesTableColumns".<BR/> synchronize COLUMN_LIST, PREV_COLUMN_LIST, LOOKUP_COLUMN_LIST in table. <br/> when modified column name of schema .
 * @param param
 * @param columnsChanged
 * @param columnNameList
 * @param tmpParam
 */
private static void syncNodePropertiesTableColumns(IElementParameter param,List<ColumnNameChanged> columnsChanged,String[] columnNameList,IElementParameter tmpParam){
  if (columnsChanged == null || columnsChanged.isEmpty()) {
    return;
  }
  if (columnNameList == null || columnNameList.length == 0) {
    return;
  }
  if (!isUpdateColumnEnable(param,columnsChanged,tmpParam)) {
    return;
  }
  String componentUniqueName="String_Node_Str";
  String preRowLookup="String_Node_Str";
  if (tmpParam.getFieldType() == EParameterFieldType.LOOKUP_COLUMN_LIST && columnNameList[0].indexOf("String_Node_Str") > 0) {
    ColumnNameChanged tmpChanged=columnsChanged.get(0);
    if (tmpChanged instanceof ColumnNameChangedExt) {
      componentUniqueName=((ColumnNameChangedExt)tmpChanged).getChangedNode().getUniqueName() + "String_Node_Str";
      preRowLookup=columnNameList[0].substring(0,columnNameList[0].indexOf("String_Node_Str") + 1);
    }
  }
  for (  ColumnNameChanged colChanged : columnsChanged) {
    String newName=preRowLookup + colChanged.getNewName();
    ColumnNameChanged theChanged=null;
    for (    String element : columnNameList) {
      if (newName.equals(element)) {
        theChanged=colChanged;
        break;
      }
    }
    if (theChanged != null) {
      for (      Map<String,Object> currentLine : (List<Map<String,Object>>)param.getValue()) {
        if (currentLine.get(tmpParam.getName()).equals(componentUniqueName + theChanged.getOldName())) {
          currentLine.put(tmpParam.getName(),componentUniqueName + theChanged.getNewName());
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * DOC ggu Comment method "syncNodePropertiesTableColumns".<BR/> synchronize COLUMN_LIST, PREV_COLUMN_LIST, LOOKUP_COLUMN_LIST in table. <br/> when modified column name of schema .
 * @param param
 * @param columnsChanged
 * @param columnNameList
 * @param tmpParam
 */
private static void syncNodePropertiesTableColumns(IElementParameter param,List<ColumnNameChanged> columnsChanged,String[] columnNameList,IElementParameter tmpParam){
  if (columnsChanged == null || columnsChanged.isEmpty()) {
    return;
  }
  if (columnNameList == null || columnNameList.length == 0) {
    return;
  }
  if (!isUpdateColumnEnable(param,columnsChanged,tmpParam)) {
    return;
  }
  String componentUniqueName="String_Node_Str";
  String preRowLookup="String_Node_Str";
  if (tmpParam.getFieldType() == EParameterFieldType.LOOKUP_COLUMN_LIST && columnNameList[0].indexOf("String_Node_Str") > 0) {
    ColumnNameChanged tmpChanged=columnsChanged.get(0);
    if (tmpChanged instanceof ColumnNameChangedExt) {
      componentUniqueName=((ColumnNameChangedExt)tmpChanged).getChangedNode().getUniqueName() + "String_Node_Str";
      preRowLookup=columnNameList[0].substring(0,columnNameList[0].indexOf("String_Node_Str") + 1);
    }
  }
  for (  ColumnNameChanged colChanged : columnsChanged) {
    String newName=preRowLookup + colChanged.getNewName();
    ColumnNameChanged theChanged=null;
    for (    String element : columnNameList) {
      if (newName.equals(element)) {
        theChanged=colChanged;
        break;
      }
    }
    if (theChanged != null && param.getValue() != null) {
      for (      Map<String,Object> currentLine : (List<Map<String,Object>>)param.getValue()) {
        if (currentLine.get(tmpParam.getName()).equals(componentUniqueName + theChanged.getOldName())) {
          currentLine.put(tmpParam.getName(),componentUniqueName + theChanged.getNewName());
        }
      }
    }
  }
}