diff options
Diffstat (limited to 'src/backend/rewrite/rewriteRemove.c')
-rw-r--r-- | src/backend/rewrite/rewriteRemove.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c index ba409f4fbf6..760614461cd 100644 --- a/src/backend/rewrite/rewriteRemove.c +++ b/src/backend/rewrite/rewriteRemove.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.40 2000/09/29 18:21:24 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.41 2000/11/16 22:30:29 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -35,21 +35,26 @@ RewriteGetRuleEventRel(char *rulename) { HeapTuple htup; Oid eventrel; + char *result; - htup = SearchSysCacheTuple(RULENAME, - PointerGetDatum(rulename), - 0, 0, 0); + htup = SearchSysCache(RULENAME, + PointerGetDatum(rulename), + 0, 0, 0); if (!HeapTupleIsValid(htup)) elog(ERROR, "Rule or view \"%s\" not found", ((strncmp(rulename, "_RET", 4) == 0) ? (rulename + 4) : rulename)); eventrel = ((Form_pg_rewrite) GETSTRUCT(htup))->ev_class; - htup = SearchSysCacheTuple(RELOID, - PointerGetDatum(eventrel), - 0, 0, 0); + ReleaseSysCache(htup); + + htup = SearchSysCache(RELOID, + PointerGetDatum(eventrel), + 0, 0, 0); if (!HeapTupleIsValid(htup)) elog(ERROR, "Relation %u not found", eventrel); - return NameStr(((Form_pg_class) GETSTRUCT(htup))->relname); + result = pstrdup(NameStr(((Form_pg_class) GETSTRUCT(htup))->relname)); + ReleaseSysCache(htup); + return result; } /* @@ -75,9 +80,9 @@ RemoveRewriteRule(char *ruleName) /* * Find the tuple for the target rule. */ - tuple = SearchSysCacheTupleCopy(RULENAME, - PointerGetDatum(ruleName), - 0, 0, 0); + tuple = SearchSysCacheCopy(RULENAME, + PointerGetDatum(ruleName), + 0, 0, 0); /* * complain if no rule with such name existed |