Hi All,
DBLINK contrib module started showing :"unnamed" connection name.
Consider the below test:
postgres=# CREATE ROLE alice NOSUPERUSER NOCREATEDB NOCREATEROLE LOGIN PASSWORD 'wonderland';
CREATE ROLE
postgres=# GRANT EXECUTE ON FUNCTION dblink_connect_u(text,text) to alice;
GRANT
postgres=# \c postgres alice
You are now connected to database "postgres" as user "alice".
postgres=> SELECT dblink_connect_u('sm_conn_30','dbname=postgres user=alice password=wonderland');
dblink_connect_u
------------------
OK
(1 row)
postgres=> SELECT * FROM dblink_send_query('sm_conn_30','SELECT pg_stat_reset()') as dgr;
dgr
-----
1
(1 row)
postgres=> SELECT * FROM dblink_get_result('sm_conn_30') AS dgr(curr_user boolean);
ERROR: permission denied for function pg_stat_reset
CONTEXT: Error occurred on dblink connection named "unnamed": could not execute query.
This started with below commit:
commit acaf7ccb94a3916ea83712671a3563f0eb595558
Author: Peter Eisentraut <
peter_e@gmx.net>
Date: Sun Dec 25 12:00:00 2016 -0500
dblink: Replace some macros by static functions
Also remove some unused code and the no longer useful dblink.h file.
Reviewed-by: Tsunakawa, Takayuki <
tsunakawa.takay@jp.fujitsu.com>
Before this, macro used to assign the conname local variable; I quickly worked
on the fix and attached patch do fix the issues. Patch assign the conname
local variable, so that error context show the correct connection name.
Regards,