contrib/dblink in 8.4 supports a server name by CREATE SERVER for connection string, but it always requires an user-mapping (by CREATE USER MAPPING). However, I think it should work user-mappings because it works when the connection string is passed directly.
=# SELECT * FROM dblink('dbname=postgres', 'SELECT current_user') AS t(i name); (ok) =# CREATE FOREIGN DATA WRAPPER postgresql VALIDATOR postgresql_fdw_validator; =# CREATE SERVER server1 FOREIGN DATA WRAPPER postgresql OPTIONS (dbname 'postgres'); =# SELECT * FROM dblink('server1', 'SELECT 1') AS t(i integer); ERROR: user mapping not found for "postgres" The attached patch adds 'missing_ok' parameter to GetUserMapping() and made dblink to use it. There should be no additional security issues here because dblink's original security check works even for server name mode. Regards, --- ITAGAKI Takahiro NTT Open Source Software Center
dblink-no-user-mapping.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers