Program: 84080
Project: 84080
Buggy source:
/** 
 * MySQL specific implementation
 */
protected void getColumnTypeAndDefValue(Column columnInfo,ResultSet rs,Database database) throws SQLException, JDBCException {
  String columnTypeName=rs.getString("String_Node_Str");
  String columnName=rs.getString("String_Node_Str");
  String tableName=rs.getString("String_Node_Str");
  String schemaName=rs.getString("String_Node_Str");
  Map<String,List<String>> tableSchema=new HashMap<String,List<String>>();
  if (!schemaCache.containsKey(tableName)) {
    Statement selectStatement=database.getConnection().createStatement();
    ResultSet rsColumnType=selectStatement.executeQuery("String_Node_Str" + database.escapeTableName(schemaName,tableName));
    while (rsColumnType.next()) {
      List<String> colSchema=new ArrayList<String>();
      colSchema.add(rsColumnType.getString("String_Node_Str"));
      colSchema.add(rsColumnType.getString("String_Node_Str"));
      tableSchema.put(rsColumnType.getString("String_Node_Str"),colSchema);
    }
    rsColumnType.close();
    schemaCache.put(tableName,tableSchema);
  }
  tableSchema=schemaCache.get(tableName);
  if (columnTypeName.toLowerCase().startsWith("String_Node_Str") || columnTypeName.toLowerCase().startsWith("String_Node_Str")) {
    columnInfo.setTypeName(tableSchema.get(columnName).get(0));
    try {
      String tmpDefaultValue=(String)database.convertDatabaseValueToJavaObject(tableSchema.get(columnName).get(1),columnInfo.getDataType(),columnInfo.getColumnSize(),columnInfo.getDecimalDigits());
      if ("String_Node_Str".equals(tmpDefaultValue)) {
        columnInfo.setDefaultValue(null);
      }
 else {
        columnInfo.setDefaultValue(tmpDefaultValue);
      }
    }
 catch (    ParseException e) {
      throw new JDBCException(e);
    }
  }
 else   if (columnTypeName.toLowerCase().equals("String_Node_Str") || columnTypeName.toLowerCase().equals("String_Node_Str")) {
    columnInfo.setTypeName(columnTypeName);
    columnInfo.setDefaultValue(null);
  }
 else   if (columnTypeName.toLowerCase().equals("String_Node_Str") && !tableSchema.get(columnName).get(1).equals("String_Node_Str")) {
    columnInfo.setTypeName(columnTypeName);
    columnInfo.setDefaultValue(tableSchema.get(columnName).get(1));
  }
 else {
    super.getColumnTypeAndDefValue(columnInfo,rs,database);
  }
}

Fixed version (ground truth):
/** 
 * MySQL specific implementation
 */
protected void getColumnTypeAndDefValue(Column columnInfo,ResultSet rs,Database database) throws SQLException, JDBCException {
  String columnTypeName=rs.getString("String_Node_Str");
  String columnName=rs.getString("String_Node_Str");
  String tableName=rs.getString("String_Node_Str");
  String schemaName=rs.getString("String_Node_Str");
  Map<String,List<String>> tableSchema=new HashMap<String,List<String>>();
  if (!schemaCache.containsKey(tableName)) {
    Statement selectStatement=database.getConnection().createStatement();
    ResultSet rsColumnType=selectStatement.executeQuery("String_Node_Str" + database.escapeTableName(schemaName,tableName));
    while (rsColumnType.next()) {
      List<String> colSchema=new ArrayList<String>();
      colSchema.add(rsColumnType.getString("String_Node_Str"));
      colSchema.add(rsColumnType.getString("String_Node_Str"));
      tableSchema.put(rsColumnType.getString("String_Node_Str"),colSchema);
    }
    rsColumnType.close();
    schemaCache.put(tableName,tableSchema);
  }
  tableSchema=schemaCache.get(tableName);
  if (columnTypeName.toLowerCase().startsWith("String_Node_Str") || columnTypeName.toLowerCase().startsWith("String_Node_Str")) {
    columnInfo.setTypeName(tableSchema.get(columnName).get(0));
    try {
      String tmpDefaultValue=(String)database.convertDatabaseValueToJavaObject(tableSchema.get(columnName).get(1),columnInfo.getDataType(),columnInfo.getColumnSize(),columnInfo.getDecimalDigits());
      if ("String_Node_Str".equals(tmpDefaultValue)) {
        columnInfo.setDefaultValue(null);
      }
 else {
        columnInfo.setDefaultValue(tmpDefaultValue);
      }
    }
 catch (    ParseException e) {
      throw new JDBCException(e);
    }
  }
 else   if (columnTypeName.toLowerCase().equals("String_Node_Str") || columnTypeName.toLowerCase().equals("String_Node_Str")) {
    columnInfo.setTypeName(columnTypeName);
    columnInfo.setDefaultValue(null);
  }
 else   if (columnTypeName.toLowerCase().equals("String_Node_Str") && !"String_Node_Str".equals(tableSchema.get(columnName).get(1))) {
    columnInfo.setTypeName(columnTypeName);
    columnInfo.setDefaultValue(tableSchema.get(columnName).get(1));
  }
 else {
    super.getColumnTypeAndDefValue(columnInfo,rs,database);
  }
}