diff options
Diffstat (limited to 'src/backend/rewrite/rewriteRemove.c')
-rw-r--r-- | src/backend/rewrite/rewriteRemove.c | 65 |
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. */ |