Program: 84106
Project: 84106
Buggy source:
/** 
 * Returns the type name and any parameters suitable for SQL.
 */
public String getDataTypeString(Database database){
  List<Integer> noParens=Arrays.asList(Types.ARRAY,Types.BIGINT,Types.BINARY,Types.BIT,Types.BLOB,Types.BOOLEAN,Types.CLOB,Types.DATALINK,Types.DATE,Types.DISTINCT,Types.INTEGER,Types.JAVA_OBJECT,Types.LONGVARBINARY,Types.NULL,Types.OTHER,Types.REF,Types.SMALLINT,Types.STRUCT,Types.TIME,Types.TIMESTAMP,Types.TINYINT,Types.LONGVARCHAR);
  List<Integer> oneParam=Arrays.asList(Types.CHAR,Types.VARCHAR,Types.VARBINARY);
  List<Integer> twoParams=Arrays.asList(Types.DECIMAL,Types.DOUBLE,Types.FLOAT,Types.NUMERIC,Types.REAL);
  String translatedTypeName=this.getTypeName();
  if (database instanceof PostgresDatabase) {
    if ("String_Node_Str".equals(translatedTypeName)) {
      translatedTypeName="String_Node_Str";
    }
  }
  String dataType;
  if (noParens.contains(this.getDataType())) {
    dataType=translatedTypeName;
  }
 else   if (oneParam.contains(this.getDataType())) {
    if (database instanceof PostgresDatabase && translatedTypeName.equals("String_Node_Str")) {
      return translatedTypeName;
    }
 else     if (database instanceof MSSQLDatabase && translatedTypeName.equals("String_Node_Str")) {
      return translatedTypeName;
    }
    dataType=translatedTypeName + "String_Node_Str" + this.getColumnSize()+ "String_Node_Str";
  }
 else   if (twoParams.contains(this.getDataType())) {
    if (database instanceof PostgresDatabase && this.getColumnSize() == 131089) {
      dataType="String_Node_Str";
    }
 else     if (database instanceof MSSQLDatabase && translatedTypeName.equalsIgnoreCase("String_Node_Str")) {
      dataType=translatedTypeName.toUpperCase();
    }
 else {
      dataType=translatedTypeName + "String_Node_Str" + this.getColumnSize()+ "String_Node_Str"+ this.getDecimalDigits()+ "String_Node_Str";
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + this.getDataType() + "String_Node_Str"+ this.getTypeName()+ "String_Node_Str");
  }
  return dataType;
}

Fixed version (ground truth):
/** 
 * Returns the type name and any parameters suitable for SQL.
 */
public String getDataTypeString(Database database){
  List<Integer> noParens=Arrays.asList(Types.ARRAY,Types.BIGINT,Types.BINARY,Types.BIT,Types.BLOB,Types.BOOLEAN,Types.CLOB,Types.DATALINK,Types.DATE,Types.DISTINCT,Types.INTEGER,Types.JAVA_OBJECT,Types.LONGVARBINARY,Types.NULL,Types.OTHER,Types.REF,Types.SMALLINT,Types.STRUCT,Types.TIME,Types.TIMESTAMP,Types.TINYINT,Types.LONGVARCHAR);
  List<Integer> oneParam=Arrays.asList(Types.CHAR,Types.VARCHAR,Types.VARBINARY);
  List<Integer> twoParams=Arrays.asList(Types.DECIMAL,Types.DOUBLE,Types.FLOAT,Types.NUMERIC,Types.REAL);
  String translatedTypeName=this.getTypeName();
  if (database instanceof PostgresDatabase) {
    if ("String_Node_Str".equals(translatedTypeName)) {
      translatedTypeName="String_Node_Str";
    }
  }
  String dataType;
  if (noParens.contains(this.getDataType())) {
    dataType=translatedTypeName;
  }
 else   if (oneParam.contains(this.getDataType())) {
    if (database instanceof PostgresDatabase && translatedTypeName.equals("String_Node_Str")) {
      return translatedTypeName;
    }
 else     if (database instanceof MSSQLDatabase && translatedTypeName.equals("String_Node_Str")) {
      return translatedTypeName;
    }
 else     if (database instanceof MySQLDatabase && (translatedTypeName.startsWith("String_Node_Str") || translatedTypeName.startsWith("String_Node_Str"))) {
      return translatedTypeName;
    }
    dataType=translatedTypeName + "String_Node_Str" + this.getColumnSize()+ "String_Node_Str";
  }
 else   if (twoParams.contains(this.getDataType())) {
    if (database instanceof PostgresDatabase && this.getColumnSize() == 131089) {
      dataType="String_Node_Str";
    }
 else     if (database instanceof MSSQLDatabase && translatedTypeName.equalsIgnoreCase("String_Node_Str")) {
      dataType=translatedTypeName.toUpperCase();
    }
 else {
      dataType=translatedTypeName + "String_Node_Str" + this.getColumnSize()+ "String_Node_Str"+ this.getDecimalDigits()+ "String_Node_Str";
    }
  }
 else {
    throw new RuntimeException("String_Node_Str" + this.getDataType() + "String_Node_Str"+ this.getTypeName()+ "String_Node_Str");
  }
  return dataType;
}