"David Quinn-Jacobs" <dqj@ecornell.com> writes:
> Causes connection failure. To re-create:
> CREATE TABLE Local ( foo TEXT );
> CREATE TABLE Remote ( bar TEXT );
> CREATE VIEW DblinkBugView AS
> SELECT * FROM Local L
> LEFT OUTER JOIN dblink( 'hostname=123.456.789.012
> dbname=a_longish_database_name user=my_user_name password=my_password',
> 'SELECT bar FROM Remote' ) AS R ( bar TEXT ) ON (L.foo=R.bar);
> The sample case can have both tables located on the same server to simplify.
> The error message is not just generated. The string is actually truncated,
> as demonstrated in the psql command result:
> mydb=# SELECT * FROM DblinkBugView;
> NOTICE: identifier "host=123.456.789.012 dbname=a_longish_database_name
> user=my_user_name password=my_password" will be truncated to
> "host=123.456.789.012 dbname=a_longish_database_name user=my_user_name p"
> ERROR: could not establish connection
> DETAIL: FATAL: no pg_hba.conf entry for host "123.456.789.012", user
> "my_user_name", database "a_longish_database_name", SSL off
Well, it works for me, as nearly as I can replicate this test case.
I get the bogus NOTICE but the connection goes through anyway:
contrib_regression=# SELECT * FROM DblinkBugView;
NOTICE: identifier "host=127.0.0.1
dbname=contrib_regression user=postgres" will be truncated to "host=127.0.0.1
dbname=contrib_regression user=po"
foo | bar
-----+-----
(0 rows)
Please notice that the connection error you are getting is *not* about a
bad password. It looks like you've neglected to provide a pg_hba.conf
entry that will allow dblink connections.
regards, tom lane