Program: 129046
Project: 129046
Buggy source:
private static void fillSynonmsForOracle(IMetadataConnection iMetadataConnection,List<TdColumn> metadataColumns,NamedColumnSet table,String tableName) throws SQLException {
  String synSQL="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str" + tableName + "String_Node_Str";
  if (!("String_Node_Str").equals(iMetadataConnection.getSchema())) {
    synSQL+="String_Node_Str" + iMetadataConnection.getSchema() + "String_Node_Str";
  }
 else   if (table.eContainer() instanceof Schema) {
    Schema schema=(Schema)table.eContainer();
    synSQL+="String_Node_Str" + schema.getName() + "String_Node_Str";
  }
  Statement sta=ExtractMetaDataUtils.conn.createStatement();
  ExtractMetaDataUtils.setQueryStatementTimeout(sta);
  ResultSet columns=sta.executeQuery(synSQL);
  String typeName=null;
  int index=0;
  while (columns.next()) {
    long numPrecRadix=0;
    String columnName=columns.getString(GetColumn.COLUMN_NAME.name());
    TdColumn column=ColumnHelper.createTdColumn(columnName);
    String label=column.getLabel();
    label=ManagementTextUtils.filterSpecialChar(label);
    String sub="String_Node_Str";
    String sub2="String_Node_Str";
    String label2=label;
    if (label != null && label.length() > 0 && label.startsWith("String_Node_Str")) {
      sub=label.substring(1);
      if (sub != null && sub.length() > 0) {
        sub2=sub.substring(1);
      }
    }
    ICoreService coreService=CoreRuntimePlugin.getInstance().getCoreService();
    if (coreService.isKeyword(label) || coreService.isKeyword(sub) || coreService.isKeyword(sub2)) {
      label="String_Node_Str" + label;
    }
    label=MetadataToolHelper.validateColumnName(label,index);
    column.setLabel(label);
    column.setOriginalField(label2);
    if (!ExtractMetaDataUtils.needFakeDatabaseMetaData(iMetadataConnection.getDbType(),iMetadataConnection.isSqlMode())) {
      typeName=columns.getString(GetColumn.DATA_TYPE.name());
    }
    try {
      int column_size=columns.getInt("String_Node_Str");
      column.setLength(column_size);
      numPrecRadix=columns.getLong("String_Node_Str");
      column.setPrecision(numPrecRadix);
    }
 catch (    Exception e1) {
      log.warn(e1,e1);
    }
    DatabaseConnection dbConnection=(DatabaseConnection)ConnectionHelper.getConnection(table);
    String dbmsId=dbConnection == null ? null : dbConnection.getDbmsId();
    if (dbmsId != null) {
      MappingTypeRetriever mappingTypeRetriever=MetadataTalendType.getMappingTypeRetriever(dbmsId);
      String talendType=mappingTypeRetriever.getDefaultSelectedTalendType(typeName,ExtractMetaDataUtils.getIntMetaDataInfo(columns,"String_Node_Str"),ExtractMetaDataUtils.getIntMetaDataInfo(columns,"String_Node_Str"));
      column.setTalendType(talendType);
      String defaultSelectedDbType=MetadataTalendType.getMappingTypeRetriever(dbConnection.getDbmsId()).getDefaultSelectedDbType(talendType);
      column.setSourceType(defaultSelectedDbType);
    }
    try {
      column.setNullable("String_Node_Str".equals(columns.getString(GetColumn.NULLABLE.name())));
    }
 catch (    Exception e) {
      log.error(e);
    }
    metadataColumns.add(column);
    index++;
  }
  columns.close();
}

Fixed version (ground truth):
private static void fillSynonmsForOracle(IMetadataConnection iMetadataConnection,List<TdColumn> metadataColumns,NamedColumnSet table,String tableName) throws SQLException {
  String synSQL="String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str" + tableName + "String_Node_Str";
  if (!("String_Node_Str").equals(iMetadataConnection.getSchema())) {
    synSQL+="String_Node_Str" + iMetadataConnection.getSchema() + "String_Node_Str";
  }
 else   if (table.eContainer() instanceof Schema) {
    Schema schema=(Schema)table.eContainer();
    synSQL+="String_Node_Str" + schema.getName() + "String_Node_Str";
  }
  Statement sta=ExtractMetaDataUtils.conn.createStatement();
  ExtractMetaDataUtils.setQueryStatementTimeout(sta);
  ResultSet columns=sta.executeQuery(synSQL);
  String typeName=null;
  int index=0;
  List<String> columnLabels=new ArrayList<String>();
  while (columns.next()) {
    long numPrecRadix=0;
    String columnName=columns.getString(GetColumn.COLUMN_NAME.name());
    TdColumn column=ColumnHelper.createTdColumn(columnName);
    String label=column.getLabel();
    label=ManagementTextUtils.filterSpecialChar(label);
    String sub="String_Node_Str";
    String sub2="String_Node_Str";
    String label2=label;
    if (label != null && label.length() > 0 && label.startsWith("String_Node_Str")) {
      sub=label.substring(1);
      if (sub != null && sub.length() > 0) {
        sub2=sub.substring(1);
      }
    }
    ICoreService coreService=CoreRuntimePlugin.getInstance().getCoreService();
    if (coreService.isKeyword(label) || coreService.isKeyword(sub) || coreService.isKeyword(sub2)) {
      label="String_Node_Str" + label;
    }
    label=MetadataToolHelper.validateColumnName(label,columnIndex,columnLabels);
    column.setLabel(label);
    column.setOriginalField(label2);
    if (!ExtractMetaDataUtils.needFakeDatabaseMetaData(iMetadataConnection.getDbType(),iMetadataConnection.isSqlMode())) {
      typeName=columns.getString(GetColumn.DATA_TYPE.name());
    }
    try {
      int column_size=columns.getInt("String_Node_Str");
      column.setLength(column_size);
      numPrecRadix=columns.getLong("String_Node_Str");
      column.setPrecision(numPrecRadix);
    }
 catch (    Exception e1) {
      log.warn(e1,e1);
    }
    DatabaseConnection dbConnection=(DatabaseConnection)ConnectionHelper.getConnection(table);
    String dbmsId=dbConnection == null ? null : dbConnection.getDbmsId();
    if (dbmsId != null) {
      MappingTypeRetriever mappingTypeRetriever=MetadataTalendType.getMappingTypeRetriever(dbmsId);
      String talendType=mappingTypeRetriever.getDefaultSelectedTalendType(typeName,ExtractMetaDataUtils.getIntMetaDataInfo(columns,"String_Node_Str"),ExtractMetaDataUtils.getIntMetaDataInfo(columns,"String_Node_Str"));
      column.setTalendType(talendType);
      String defaultSelectedDbType=MetadataTalendType.getMappingTypeRetriever(dbConnection.getDbmsId()).getDefaultSelectedDbType(talendType);
      column.setSourceType(defaultSelectedDbType);
    }
    try {
      column.setNullable("String_Node_Str".equals(columns.getString(GetColumn.NULLABLE.name())));
    }
 catch (    Exception e) {
      log.error(e);
    }
    metadataColumns.add(column);
    columnLabels.add(column.getLabel());
    index++;
  }
  columns.close();
}