# File lib/dbd_proxy/Proxy.rb, line 74
  def connect(dsn, user, auth, attr)
    # split dsn in two parts
    i = dsn.index("dsn=")
    raise InterfaceError, "must specify a DSN" if i.nil?

    hash = Utils.parse_params(dsn[0...i])
    dsn  = dsn[(i+4)..-1] # without dsn=

    host = hash['hostname'] || DEFAULT_HOSTNAME
    port = (hash['port'] || DEFAULT_PORT).to_i 

    if dsn.nil? or dsn.empty?
      raise InterfaceError, "must specify a DSN"
    end

    handle = DRbObject.new(nil, "druby://#{host}:#{port}")

    major, minor = USED_DBD_VERSION.split(".")
    r_major, r_minor = handle.get_used_DBD_version.split(".")

    if major.to_i != r_major.to_i 
      raise InterfaceError, "Proxy uses not compatible DBD version"
    elsif minor.to_i > r_minor.to_i
      # DBI may call methods, not available in former "minor" versions (e.g.DatbaseHandle#columns )
      raise InterfaceError, "Proxy uses not compatible DBD version; may result in problems"
    end

    db_handle = handle.DBD_connect(dsn, user, auth, attr)
    check_exception(db_handle)   

    Database.new(db_handle)
  end