diff options
author | Robert Haas <rhaas@postgresql.org> | 2011-11-17 21:31:29 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2011-11-17 21:32:34 -0500 |
commit | fc6d1006bda783cc002c61a5f072905849dbde4b (patch) | |
tree | 555ab6461e7780c0f5a5f21cc80b8f7f17eb844d /src/backend/commands/foreigncmds.c | |
parent | 709aca59608395eef9ceb7dcb79fd9d03a0709ef (diff) | |
download | postgresql-fc6d1006bda783cc002c61a5f072905849dbde4b.tar.gz postgresql-fc6d1006bda783cc002c61a5f072905849dbde4b.zip |
Further consolidation of DROP statement handling.
This gets rid of an impressive amount of duplicative code, with only
minimal behavior changes. DROP FOREIGN DATA WRAPPER now requires object
ownership rather than superuser privileges, matching the documentation
we already have. We also eliminate the historical warning about dropping
a built-in function as unuseful. All operations are now performed in the
same order for all object types handled by dropcmds.c.
KaiGai Kohei, with minor revisions by me
Diffstat (limited to 'src/backend/commands/foreigncmds.c')
-rw-r--r-- | src/backend/commands/foreigncmds.c | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index d9c27d187a7..b30ff409235 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -686,50 +686,6 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) /* - * Drop foreign-data wrapper - */ -void -RemoveForeignDataWrapper(DropFdwStmt *stmt) -{ - Oid fdwId; - ObjectAddress object; - - fdwId = get_foreign_data_wrapper_oid(stmt->fdwname, true); - - if (!superuser()) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied to drop foreign-data wrapper \"%s\"", - stmt->fdwname), - errhint("Must be superuser to drop a foreign-data wrapper."))); - - if (!OidIsValid(fdwId)) - { - if (!stmt->missing_ok) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", - stmt->fdwname))); - - /* IF EXISTS specified, just note it */ - ereport(NOTICE, - (errmsg("foreign-data wrapper \"%s\" does not exist, skipping", - stmt->fdwname))); - return; - } - - /* - * Do the deletion - */ - object.classId = ForeignDataWrapperRelationId; - object.objectId = fdwId; - object.objectSubId = 0; - - performDeletion(&object, stmt->behavior); -} - - -/* * Drop foreign-data wrapper by OID */ void @@ -958,45 +914,6 @@ AlterForeignServer(AlterForeignServerStmt *stmt) /* - * Drop foreign server - */ -void -RemoveForeignServer(DropForeignServerStmt *stmt) -{ - Oid srvId; - ObjectAddress object; - - srvId = get_foreign_server_oid(stmt->servername, true); - - if (!OidIsValid(srvId)) - { - /* Server not found, complain or notice */ - if (!stmt->missing_ok) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", stmt->servername))); - - /* IF EXISTS specified, just note it */ - ereport(NOTICE, - (errmsg("server \"%s\" does not exist, skipping", - stmt->servername))); - return; - } - - /* Only allow DROP if the server is owned by the user. */ - if (!pg_foreign_server_ownercheck(srvId, GetUserId())) - aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_FOREIGN_SERVER, - stmt->servername); - - object.classId = ForeignServerRelationId; - object.objectId = srvId; - object.objectSubId = 0; - - performDeletion(&object, stmt->behavior); -} - - -/* * Drop foreign server by OID */ void |