def connect(dsn, user, auth, attr)
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]
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
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