From 1b5cffacdffaf1cdedb60ff4bc160e65261eb4eb Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 12 Aug 2001 21:35:19 +0000 Subject: Make ALTER TABLE RENAME on a view rename the view's on-select rule too. Needed to keep pg_dump from getting confused. --- src/backend/rewrite/rewriteSupport.c | 41 ++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'src/backend/rewrite/rewriteSupport.c') diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c index 7578acbcedd..bc2f04932a4 100644 --- a/src/backend/rewrite/rewriteSupport.c +++ b/src/backend/rewrite/rewriteSupport.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.48 2001/03/22 03:59:44 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.49 2001/08/12 21:35:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -20,15 +20,52 @@ #include "rewrite/rewriteSupport.h" #include "utils/syscache.h" +#ifdef MULTIBYTE +#include "mb/pg_wchar.h" +#endif + +/* + * Is there a rule by the given name? + */ bool -IsDefinedRewriteRule(char *ruleName) +IsDefinedRewriteRule(const char *ruleName) { return SearchSysCacheExists(RULENAME, PointerGetDatum(ruleName), 0, 0, 0); } +/* + * makeViewRetrieveRuleName + * + * Given a view name, returns the name for the associated ON SELECT rule. + * + * XXX this is not the only place in the backend that knows about the _RET + * name-forming convention. + */ +char * +MakeRetrieveViewRuleName(const char *viewName) +{ + char *buf; + int buflen, + maxlen; + + buflen = strlen(viewName) + 5; + buf = palloc(buflen); + snprintf(buf, buflen, "_RET%s", viewName); + /* clip to less than NAMEDATALEN bytes, if necessary */ +#ifdef MULTIBYTE + maxlen = pg_mbcliplen(buf, strlen(buf), NAMEDATALEN - 1); +#else + maxlen = NAMEDATALEN - 1; +#endif + if (maxlen < buflen) + buf[maxlen] = '\0'; + + return buf; +} + /* * SetRelationRuleStatus * Set the value of the relation's relhasrules field in pg_class; -- cgit v1.2.3