summaryrefslogtreecommitdiff
path: root/src/backend/rewrite
diff options
context:
space:
mode:
authorRobert Haas2011-11-18 02:31:29 +0000
committerRobert Haas2011-11-18 02:32:34 +0000
commitfc6d1006bda783cc002c61a5f072905849dbde4b (patch)
tree555ab6461e7780c0f5a5f21cc80b8f7f17eb844d /src/backend/rewrite
parent709aca59608395eef9ceb7dcb79fd9d03a0709ef (diff)
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/rewrite')
-rw-r--r--src/backend/rewrite/rewriteRemove.c65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index b9b693cee1d..3cc159ae5f1 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -30,71 +30,6 @@
#include "utils/syscache.h"
#include "utils/tqual.h"
-
-/*
- * RemoveRewriteRule
- *
- * Delete a rule given its name.
- */
-void
-RemoveRewriteRule(RangeVar *relation, const char *ruleName,
- DropBehavior behavior, bool missing_ok)
-{
- HeapTuple tuple;
- Oid eventRelationOid;
- Oid owningRel;
- ObjectAddress object;
-
- /* lock level should match RemoveRewriteRuleById */
- owningRel = RangeVarGetRelid(relation, AccessExclusiveLock,
- false, false);
-
- /*
- * Find the tuple for the target rule.
- */
- tuple = SearchSysCache2(RULERELNAME,
- ObjectIdGetDatum(owningRel),
- PointerGetDatum(ruleName));
-
- /*
- * complain if no rule with such name exists
- */
- if (!HeapTupleIsValid(tuple))
- {
- if (!missing_ok)
- ereport(ERROR,
- (errcode(ERRCODE_UNDEFINED_OBJECT),
- errmsg("rule \"%s\" for relation \"%s\" does not exist",
- ruleName, get_rel_name(owningRel))));
- else
- ereport(NOTICE,
- (errmsg("rule \"%s\" for relation \"%s\" does not exist, skipping",
- ruleName, get_rel_name(owningRel))));
- return;
- }
-
- /*
- * Verify user has appropriate permissions.
- */
- eventRelationOid = ((Form_pg_rewrite) GETSTRUCT(tuple))->ev_class;
- Assert(eventRelationOid == owningRel);
- if (!pg_class_ownercheck(eventRelationOid, GetUserId()))
- aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
- get_rel_name(eventRelationOid));
-
- /*
- * Do the deletion
- */
- object.classId = RewriteRelationId;
- object.objectId = HeapTupleGetOid(tuple);
- object.objectSubId = 0;
-
- ReleaseSysCache(tuple);
-
- performDeletion(&object, behavior);
-}
-
-
/*
* Guts of rule deletion.
*/