1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-20 15:22:23 +03:00

Automatic view update rules

Bernd Helmle
This commit is contained in:
Peter Eisentraut
2009-01-22 17:27:55 +00:00
parent 5841aa86eb
commit dd7e54a17f
30 changed files with 2289 additions and 41 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.111 2009/01/01 17:23:40 momjian Exp $
* $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.112 2009/01/22 17:27:54 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -27,7 +27,9 @@
#include "parser/parse_relation.h"
#include "rewrite/rewriteDefine.h"
#include "rewrite/rewriteManip.h"
#include "rewrite/rewriteRemove.h"
#include "rewrite/rewriteSupport.h"
#include "rewrite/viewUpdate.h"
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
@ -308,13 +310,28 @@ DefineViewRules(Oid viewOid, Query *viewParse, bool replace)
viewOid,
NULL,
CMD_SELECT,
true,
true, /* is_instead */
true, /* is_auto */
replace,
list_make1(viewParse));
/*
* Someday: automatic ON INSERT, etc
* Delete all implicit rules on replace. CreateViewUpdateRules()
* below will re-create them if appropriate for the new view
* definition.
*/
if (replace)
{
Relation rel = heap_open(viewOid, AccessExclusiveLock);
RemoveAutomaticRulesOnEvent(rel, CMD_INSERT);
RemoveAutomaticRulesOnEvent(rel, CMD_DELETE);
RemoveAutomaticRulesOnEvent(rel, CMD_UPDATE);
heap_close(rel, NoLock);
}
CommandCounterIncrement();
CreateViewUpdateRules(viewOid, viewParse);
}
/*---------------------------------------------------------------