diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml index 9137a965a7..0c1db070ed 100644 --- a/doc/src/sgml/fdwhandler.sgml +++ b/doc/src/sgml/fdwhandler.sgml @@ -1323,20 +1323,6 @@ GetForeignTable(Oid relid); -UserMapping * -GetUserMappingById(Oid umid); - - - This function returns the UserMapping object for - the given user mapping OID. The OID of a user mapping for a foreign scan - is available in the RelOptInfo. - If there is no mapping for the OID, this function will throw an error. - A UserMapping object contains properties of the - user mapping (see foreign/foreign.h for details). - - - - List * GetForeignColumnOptions(Oid relid, AttrNumber attnum); diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c index 66f98f1c7e..242d6d2696 100644 --- a/src/backend/foreign/foreign.c +++ b/src/backend/foreign/foreign.c @@ -31,8 +31,6 @@ extern Datum pg_options_to_table(PG_FUNCTION_ARGS); extern Datum postgresql_fdw_validator(PG_FUNCTION_ARGS); -static HeapTuple find_user_mapping(Oid userid, Oid serverid); - /* * GetForeignDataWrapper - look up the foreign-data wrapper by OID. @@ -161,54 +159,6 @@ GetForeignServerByName(const char *srvname, bool missing_ok) return GetForeignServer(serverid); } -/* - * GetUserMappingById - look up the user mapping by its OID. - */ -UserMapping * -GetUserMappingById(Oid umid) -{ - Datum datum; - HeapTuple tp; - bool isnull; - UserMapping *um; - - tp = SearchSysCache1(USERMAPPINGOID, ObjectIdGetDatum(umid)); - if (!HeapTupleIsValid(tp)) - elog(ERROR, "cache lookup failed for user mapping %u", umid); - - um = (UserMapping *) palloc(sizeof(UserMapping)); - um->umid = umid; - - /* Extract the umuser */ - datum = SysCacheGetAttr(USERMAPPINGOID, - tp, - Anum_pg_user_mapping_umuser, - &isnull); - Assert(!isnull); - um->userid = DatumGetObjectId(datum); - - /* Extract the umserver */ - datum = SysCacheGetAttr(USERMAPPINGOID, - tp, - Anum_pg_user_mapping_umserver, - &isnull); - Assert(!isnull); - um->serverid = DatumGetObjectId(datum); - - /* Extract the umoptions */ - datum = SysCacheGetAttr(USERMAPPINGOID, - tp, - Anum_pg_user_mapping_umoptions, - &isnull); - if (isnull) - um->options = NIL; - else - um->options = untransformRelOptions(datum); - - ReleaseSysCache(tp); - - return um; -} /* * GetUserMapping - look up the user mapping. @@ -224,7 +174,23 @@ GetUserMapping(Oid userid, Oid serverid) bool isnull; UserMapping *um; - tp = find_user_mapping(userid, serverid); + tp = SearchSysCache2(USERMAPPINGUSERSERVER, + ObjectIdGetDatum(userid), + ObjectIdGetDatum(serverid)); + + if (!HeapTupleIsValid(tp)) + { + /* Not found for the specific user -- try PUBLIC */ + tp = SearchSysCache2(USERMAPPINGUSERSERVER, + ObjectIdGetDatum(InvalidOid), + ObjectIdGetDatum(serverid)); + } + + if (!HeapTupleIsValid(tp)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("user mapping not found for \"%s\"", + MappingUserName(userid)))); um = (UserMapping *) palloc(sizeof(UserMapping)); um->umid = HeapTupleGetOid(tp); @@ -246,60 +212,6 @@ GetUserMapping(Oid userid, Oid serverid) return um; } -/* - * GetUserMappingId - look up the user mapping, and return its OID - * - * If no mapping is found for the supplied user, we also look for - * PUBLIC mappings (userid == InvalidOid). - */ -Oid -GetUserMappingId(Oid userid, Oid serverid) -{ - HeapTuple tp; - Oid umid; - - tp = find_user_mapping(userid, serverid); - - /* Extract the Oid */ - umid = HeapTupleGetOid(tp); - - ReleaseSysCache(tp); - - return umid; -} - -/* - * find_user_mapping - Guts of GetUserMapping family. - * - * If no mapping is found for the supplied user, we also look for - * PUBLIC mappings (userid == InvalidOid). - */ -static HeapTuple -find_user_mapping(Oid userid, Oid serverid) -{ - HeapTuple tp; - - tp = SearchSysCache2(USERMAPPINGUSERSERVER, - ObjectIdGetDatum(userid), - ObjectIdGetDatum(serverid)); - - if (HeapTupleIsValid(tp)) - return tp; - - /* Not found for the specific user -- try PUBLIC */ - tp = SearchSysCache2(USERMAPPINGUSERSERVER, - ObjectIdGetDatum(InvalidOid), - ObjectIdGetDatum(serverid)); - - if (!HeapTupleIsValid(tp)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("user mapping not found for \"%s\"", - MappingUserName(userid)))); - - return tp; -} - /* * GetForeignTable - look up the foreign table definition by relation oid. diff --git a/src/include/foreign/foreign.h b/src/include/foreign/foreign.h index ad586e446a..5dc2c90f3c 100644 --- a/src/include/foreign/foreign.h +++ b/src/include/foreign/foreign.h @@ -72,8 +72,6 @@ typedef struct ForeignTable extern ForeignServer *GetForeignServer(Oid serverid); extern ForeignServer *GetForeignServerByName(const char *name, bool missing_ok); extern UserMapping *GetUserMapping(Oid userid, Oid serverid); -extern Oid GetUserMappingId(Oid userid, Oid serverid); -extern UserMapping *GetUserMappingById(Oid umid); extern ForeignDataWrapper *GetForeignDataWrapper(Oid fdwid); extern ForeignDataWrapper *GetForeignDataWrapperByName(const char *name, bool missing_ok);