Program: 138633
Project: 138633
Buggy source:
/** 
 * DOC zshen Comment method "retrieveColumn".
 * @param tdTable retrieve sqlDataType if it have a name is "Null".
 */
public static void retrieveColumn(MetadataTable tdTable){
  List<MetadataColumn> columnList=tdTable.getColumns();
  if (columnList != null && columnList.size() > 0 && columnList.get(0) instanceof TdColumn) {
    TdColumn tempColumn=((TdColumn)columnList.get(0));
    if (tempColumn.getSqlDataType() == null || "String_Node_Str".equalsIgnoreCase(tempColumn.getSqlDataType().getName()) && 0 == tempColumn.getSqlDataType().getJavaDataType()) {
      if (tdTable != null) {
        Connection tempConnection=ConnectionHelper.getConnection(tempColumn);
        if (tempConnection != null) {
          java.sql.Connection connection=JavaSqlFactory.createConnection(tempConnection).getObject();
          if (connection == null) {
            return;
          }
          for (          Object colobj : columnList) {
            TdColumn tdColumn=(TdColumn)colobj;
            try {
              List<TdSqlDataType> newDataTypeList=DatabaseContentRetriever.getDataType(getName(CatalogHelper.getParentCatalog(tdTable)),getName(SchemaHelper.getParentSchema(tdTable)),tdTable.getName(),tdColumn.getName(),connection);
              if (newDataTypeList.size() > 0) {
                tdColumn.setSqlDataType(newDataTypeList.get(0));
              }
            }
 catch (            SQLException e) {
              log.error(e,e);
            }
          }
        }
        ProxyRepositoryViewObject.save(tempConnection);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * DOC zshen Comment method "retrieveColumn".
 * @param tdTable retrieve sqlDataType if it have a name is "Null".
 */
public static void retrieveColumn(MetadataTable tdTable){
  List<MetadataColumn> columnList=tdTable.getColumns();
  if (columnList != null && columnList.size() > 0 && columnList.get(0) instanceof TdColumn) {
    TdColumn tempColumn=((TdColumn)columnList.get(0));
    if (tempColumn.getSqlDataType() == null || "String_Node_Str".equalsIgnoreCase(tempColumn.getSqlDataType().getName()) && 0 == tempColumn.getSqlDataType().getJavaDataType()) {
      if (tdTable != null) {
        Connection tempConnection=ConnectionHelper.getConnection(tempColumn);
        if (tempConnection != null) {
          java.sql.Connection connection=JavaSqlFactory.createConnection(tempConnection).getObject();
          if (connection == null) {
            return;
          }
          for (          Object colobj : columnList) {
            TdColumn tdColumn=(TdColumn)colobj;
            try {
              List<TdSqlDataType> newDataTypeList=DatabaseContentRetriever.getDataType(getName(CatalogHelper.getParentCatalog(tdTable)),getName(SchemaHelper.getParentSchema(tdTable)),tdTable.getName(),tdColumn.getName(),connection);
              if (newDataTypeList.size() > 0) {
                tdColumn.setSqlDataType(newDataTypeList.get(0));
              }
            }
 catch (            SQLException e) {
              log.error(e,e);
            }
          }
          ConnectionUtils.closeConnection(connection);
        }
        ProxyRepositoryViewObject.save(tempConnection);
      }
    }
  }
}