diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2013-01-21 12:06:41 -0300 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2013-01-21 12:06:41 -0300 |
commit | 765cbfdc9263bf7c90b9d1f1044c6950b8b7088c (patch) | |
tree | b7fc0ebfb2be1d051c2c223f5215239aeb3c1558 /src/backend/commands/foreigncmds.c | |
parent | 8f0d8f481e86514bb35538827df7e1e35baee368 (diff) | |
download | postgresql-765cbfdc9263bf7c90b9d1f1044c6950b8b7088c.tar.gz postgresql-765cbfdc9263bf7c90b9d1f1044c6950b8b7088c.zip |
Refactor ALTER some-obj RENAME implementation
Remove duplicate implementations of catalog munging and miscellaneous
privilege checks. Instead rely on already existing data in
objectaddress.c to do the work.
Author: KaiGai Kohei, changes by me
Reviewed by: Robert Haas, Álvaro Herrera, Dimitri Fontaine
Diffstat (limited to 'src/backend/commands/foreigncmds.c')
-rw-r--r-- | src/backend/commands/foreigncmds.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index d3af8dc22ab..7700e91c821 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -200,93 +200,6 @@ GetUserOidFromMapping(const char *username, bool missing_ok) return get_role_oid(username, missing_ok); } - -/* - * Rename foreign-data wrapper - */ -Oid -RenameForeignDataWrapper(const char *oldname, const char *newname) -{ - Oid fdwId; - HeapTuple tup; - Relation rel; - - rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); - - tup = SearchSysCacheCopy1(FOREIGNDATAWRAPPERNAME, CStringGetDatum(oldname)); - if (!HeapTupleIsValid(tup)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", oldname))); - - fdwId = HeapTupleGetOid(tup); - - /* make sure the new name doesn't exist */ - if (SearchSysCacheExists1(FOREIGNDATAWRAPPERNAME, CStringGetDatum(newname))) - ereport(ERROR, - (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("foreign-data wrapper \"%s\" already exists", newname))); - - /* must be owner of FDW */ - if (!pg_foreign_data_wrapper_ownercheck(HeapTupleGetOid(tup), GetUserId())) - aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_FDW, - oldname); - - /* rename */ - namestrcpy(&(((Form_pg_foreign_data_wrapper) GETSTRUCT(tup))->fdwname), newname); - simple_heap_update(rel, &tup->t_self, tup); - CatalogUpdateIndexes(rel, tup); - - heap_close(rel, NoLock); - heap_freetuple(tup); - - return fdwId; -} - - -/* - * Rename foreign server - */ -Oid -RenameForeignServer(const char *oldname, const char *newname) -{ - Oid srvId; - HeapTuple tup; - Relation rel; - - rel = heap_open(ForeignServerRelationId, RowExclusiveLock); - - tup = SearchSysCacheCopy1(FOREIGNSERVERNAME, CStringGetDatum(oldname)); - if (!HeapTupleIsValid(tup)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", oldname))); - - srvId = HeapTupleGetOid(tup); - - /* make sure the new name doesn't exist */ - if (SearchSysCacheExists1(FOREIGNSERVERNAME, CStringGetDatum(newname))) - ereport(ERROR, - (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("server \"%s\" already exists", newname))); - - /* must be owner of server */ - if (!pg_foreign_server_ownercheck(HeapTupleGetOid(tup), GetUserId())) - aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_FOREIGN_SERVER, - oldname); - - /* rename */ - namestrcpy(&(((Form_pg_foreign_server) GETSTRUCT(tup))->srvname), newname); - simple_heap_update(rel, &tup->t_self, tup); - CatalogUpdateIndexes(rel, tup); - - heap_close(rel, NoLock); - heap_freetuple(tup); - - return srvId; -} - - /* * Internal workhorse for changing a data wrapper's owner. * |