diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml index 9137a965a709f5c4a0f55a0329bf65512e225b69..0c1db070ed88657965c02e16d611e3dc258fa371 100644 --- a/doc/src/sgml/fdwhandler.sgml +++ b/doc/src/sgml/fdwhandler.sgml @@ -1323,20 +1323,6 @@ GetForeignTable(Oid relid); <para> <programlisting> -UserMapping * -GetUserMappingById(Oid umid); -</programlisting> - - This function returns the <structname>UserMapping</structname> object for - the given user mapping OID. The OID of a user mapping for a foreign scan - is available in the <structname>RelOptInfo</structname>. - If there is no mapping for the OID, this function will throw an error. - A <structname>UserMapping</structname> object contains properties of the - user mapping (see <filename>foreign/foreign.h</filename> for details). - </para> - - <para> -<programlisting> List * GetForeignColumnOptions(Oid relid, AttrNumber attnum); </programlisting> diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c index 66f98f1c7ec378bf25485819c4f9048516b51d87..242d6d2696371be6076d8534e5c7fad455553f2e 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 ad586e446a9836c505d39f222db0df0381f7f665..5dc2c90f3c31028ded6c7299614bf30d0fe68ca1 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);