Hi
Mild corner-case annoyance while doing Random Experimental Things:
postgres=# SELECT * FROM parttest;
ERROR: user mapping not found for "postgres"
Okaaaay, but which server?
postgres=# \det
List of foreign tables
Schema | Table | Server
--------+---------------+-----------
public | parttest_10_1 | fdw_node2
public | parttest_10_3 | fdw_node3
public | parttest_10_5 | fdw_node4
public | parttest_10_7 | fdw_node5
public | parttest_10_9 | fdw_node6
(5 rows)
(Muffled sound of small patch hatching) aha:
postgres=# SELECT * FROM parttest;
ERROR: user mapping not found for user "postgres", server "fdw_node5"
Regards
Ian Barwick
commit 1e08150c0bba813050b00e4e35cdba1572fd5564
Author: Ian Barwick <[email protected]>
Date: Fri Jun 23 16:36:41 2023 +0900
Improve "user mapping not found" error message
Display the name of the foreign server for which the user mapping
was not found.
diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c
index ca3ad55b62..b649064141 100644
--- a/src/backend/foreign/foreign.c
+++ b/src/backend/foreign/foreign.c
@@ -217,10 +217,15 @@ GetUserMapping(Oid userid, Oid serverid)
}
if (!HeapTupleIsValid(tp))
+ {
+ ForeignServer *server = GetForeignServer(serverid);
+
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("user mapping not found for \"%s\"",
- MappingUserName(userid))));
+ errmsg("user mapping not found for user \"%s\", server \"%s\"",
+ MappingUserName(userid),
+ server->servername)));
+ }
um = (UserMapping *) palloc(sizeof(UserMapping));
um->umid = ((Form_pg_user_mapping) GETSTRUCT(tp))->oid;