Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2001-08-12 21:35:19 +0000
committerTom Lane2001-08-12 21:35:19 +0000
commit1b5cffacdffaf1cdedb60ff4bc160e65261eb4eb (patch)
treec34ded33b39c6b0924f00927313f8b9192ec5939 /src/backend/commands/rename.c
parenta0c449a0f8bc29326c7fa9b49c2198a92e35681a (diff)
Make ALTER TABLE RENAME on a view rename the view's on-select rule too.
Needed to keep pg_dump from getting confused.
Diffstat (limited to 'src/backend/commands/rename.c')
-rw-r--r--src/backend/commands/rename.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c
index 52568f29f5f..d56c7f2652c 100644
--- a/src/backend/commands/rename.c
+++ b/src/backend/commands/rename.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.56 2001/03/22 03:59:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.57 2001/08/12 21:35:18 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,6 +26,8 @@
#include "miscadmin.h"
#include "storage/smgr.h"
#include "optimizer/prep.h"
+#include "rewrite/rewriteDefine.h"
+#include "rewrite/rewriteSupport.h"
#include "utils/acl.h"
#include "utils/relcache.h"
#include "utils/syscache.h"
@@ -265,4 +267,17 @@ renamerel(const char *oldrelname, const char *newrelname)
*/
if (relkind != RELKIND_INDEX)
TypeRename(oldrelname, newrelname);
+
+ /*
+ * If it's a view, must also rename the associated ON SELECT rule.
+ */
+ if (relkind == RELKIND_VIEW)
+ {
+ char *oldrulename,
+ *newrulename;
+
+ oldrulename = MakeRetrieveViewRuleName(oldrelname);
+ newrulename = MakeRetrieveViewRuleName(newrelname);
+ RenameRewriteRule(oldrulename, newrulename);
+ }
}