summaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteDefine.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2009-01-27 12:40:15 +0000
committerPeter Eisentraut <peter_e@gmx.net>2009-01-27 12:40:15 +0000
commit5fe3da927b2857761f9206d9fc597cf5321d9638 (patch)
treeb8cab00d0e561d46ba4eb6ef9428ecfd85fd5a33 /src/backend/rewrite/rewriteDefine.c
parentc0f92b57dc91126248d80462ac31497c091a9939 (diff)
Revert updatable views
Diffstat (limited to 'src/backend/rewrite/rewriteDefine.c')
-rw-r--r--src/backend/rewrite/rewriteDefine.c66
1 files changed, 2 insertions, 64 deletions
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index fe81a9ff139..03c5c5ae383 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -8,14 +8,13 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.135 2009/01/22 17:27:54 petere Exp $
+ * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.136 2009/01/27 12:40:15 petere Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "access/heapam.h"
-#include "access/xact.h"
#include "catalog/dependency.h"
#include "catalog/indexing.h"
#include "catalog/namespace.h"
@@ -26,7 +25,6 @@
#include "parser/parse_utilcmd.h"
#include "rewrite/rewriteDefine.h"
#include "rewrite/rewriteManip.h"
-#include "rewrite/rewriteRemove.h"
#include "rewrite/rewriteSupport.h"
#include "utils/acl.h"
#include "utils/builtins.h"
@@ -41,7 +39,6 @@ static void checkRuleResultList(List *targetList, TupleDesc resultDesc,
bool isSelect);
static bool setRuleCheckAsUser_walker(Node *node, Oid *context);
static void setRuleCheckAsUser_Query(Query *qry, Oid userid);
-static const char *rule_event_string(CmdType evtype);
/*
@@ -55,7 +52,6 @@ InsertRule(char *rulname,
Oid eventrel_oid,
AttrNumber evslot_index,
bool evinstead,
- bool is_auto,
Node *event_qual,
List *action,
bool replace)
@@ -88,7 +84,6 @@ InsertRule(char *rulname,
values[i++] = CharGetDatum(evtype + '0'); /* ev_type */
values[i++] = CharGetDatum(RULE_FIRES_ON_ORIGIN); /* ev_enabled */
values[i++] = BoolGetDatum(evinstead); /* is_instead */
- values[i++] = BoolGetDatum(is_auto); /* is_auto */
values[i++] = CStringGetTextDatum(evqual); /* ev_qual */
values[i++] = CStringGetTextDatum(actiontree); /* ev_action */
@@ -107,11 +102,7 @@ InsertRule(char *rulname,
if (HeapTupleIsValid(oldtup))
{
- /*
- * If REPLACE was not used we still check if the old rule is
- * automatic: Then we replace it anyway.
- */
- if (!replace && !((Form_pg_rewrite) GETSTRUCT(oldtup))->is_auto)
+ if (!replace)
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_OBJECT),
errmsg("rule \"%s\" for relation \"%s\" already exists",
@@ -124,7 +115,6 @@ InsertRule(char *rulname,
replaces[Anum_pg_rewrite_ev_attr - 1] = true;
replaces[Anum_pg_rewrite_ev_type - 1] = true;
replaces[Anum_pg_rewrite_is_instead - 1] = true;
- replaces[Anum_pg_rewrite_is_auto - 1] = true;
replaces[Anum_pg_rewrite_ev_qual - 1] = true;
replaces[Anum_pg_rewrite_ev_action - 1] = true;
@@ -215,7 +205,6 @@ DefineRule(RuleStmt *stmt, const char *queryString)
whereClause,
stmt->event,
stmt->instead,
- false, /* not is_auto */
stmt->replace,
actions);
}
@@ -234,7 +223,6 @@ DefineQueryRewrite(char *rulename,
Node *event_qual,
CmdType event_type,
bool is_instead,
- bool is_auto,
bool replace,
List *action)
{
@@ -458,42 +446,6 @@ DefineQueryRewrite(char *rulename,
RelationGetDescr(event_relation),
false);
}
-
- /*
- * If defining a non-automatic DO INSTEAD rule, drop all
- * automatic rules on the same event.
- */
- if (!is_auto && is_instead)
- {
- RemoveAutomaticRulesOnEvent(event_relation, event_type);
- CommandCounterIncrement();
- }
-
- /*
- * If defining an automatic rule and there is a manual rule on
- * the same event, warn and don't do it.
- */
- if (is_auto && event_relation->rd_rules != NULL)
- {
- int i;
-
- for (i = 0; i < event_relation->rd_rules->numLocks; i++)
- {
- RewriteRule *rule = event_relation->rd_rules->rules[i];
-
- if (rule->event == event_type && !rule->is_auto && rule->isInstead == is_instead)
- {
- ereport(WARNING,
- (errmsg("automatic %s rule not created because manually created %s rule exists",
- rule_event_string(event_type), rule_event_string(event_type)),
- errhint("If you prefer to have the automatic rule, drop the manually created rule and run CREATE OR REPLACE VIEW again.")));
-
- heap_close(event_relation, NoLock);
- return;
- }
- }
- }
-
}
/*
@@ -509,7 +461,6 @@ DefineQueryRewrite(char *rulename,
event_relid,
event_attno,
is_instead,
- is_auto,
event_qual,
action,
replace);
@@ -803,16 +754,3 @@ RenameRewriteRule(Oid owningRel, const char *oldName,
}
#endif
-
-
-static const char *
-rule_event_string(CmdType type)
-{
- if (type == CMD_INSERT)
- return "INSERT";
- if (type == CMD_UPDATE)
- return "UPDATE";
- if (type == CMD_DELETE)
- return "DELETE";
- return "???";
-}