Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/rewrite')
-rw-r--r--src/backend/rewrite/locks.c16
-rw-r--r--src/backend/rewrite/rewriteDefine.c7
-rw-r--r--src/backend/rewrite/rewriteHandler.c147
-rw-r--r--src/backend/rewrite/rewriteManip.c116
-rw-r--r--src/backend/rewrite/rewriteRemove.c17
5 files changed, 174 insertions, 129 deletions
diff --git a/src/backend/rewrite/locks.c b/src/backend/rewrite/locks.c
index fbdcc2c4f64..cd3fa69cd8d 100644
--- a/src/backend/rewrite/locks.c
+++ b/src/backend/rewrite/locks.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.27 2000/01/26 05:56:49 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/Attic/locks.c,v 1.28 2000/04/12 17:15:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,15 +34,16 @@
* XXX this should be unified with attribute_used()
*/
-typedef struct {
+typedef struct
+{
int varno;
int attnum;
int sublevels_up;
} thisLockWasTriggered_context;
static bool
-thisLockWasTriggered_walker (Node *node,
- thisLockWasTriggered_context *context)
+thisLockWasTriggered_walker(Node *node,
+ thisLockWasTriggered_context *context)
{
if (node == NULL)
return false;
@@ -58,9 +59,10 @@ thisLockWasTriggered_walker (Node *node,
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -69,7 +71,7 @@ thisLockWasTriggered_walker (Node *node,
context->sublevels_up++;
if (thisLockWasTriggered_walker((Node *) (sub->subselect), context))
{
- context->sublevels_up--; /* not really necessary */
+ context->sublevels_up--; /* not really necessary */
return true;
}
context->sublevels_up--;
diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c
index b8aea0400b9..69b7800cccc 100644
--- a/src/backend/rewrite/rewriteDefine.c
+++ b/src/backend/rewrite/rewriteDefine.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.43 2000/02/26 06:36:44 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.44 2000/04/12 17:15:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -40,7 +40,8 @@ quoteString(StringInfo buf, char *source)
appendStringInfoChar(buf, '\'');
for (current = source; *current; current++)
{
- char ch = *current;
+ char ch = *current;
+
if (ch == '\'' || ch == '\\')
{
appendStringInfoChar(buf, '\\');
@@ -297,7 +298,7 @@ DefineQueryRewrite(RuleStmt *stmt)
rule = event_relation->rd_rules->rules[i];
if (rule->event == CMD_SELECT)
elog(ERROR, "%s is already a view",
- RelationGetRelationName(event_relation));
+ RelationGetRelationName(event_relation));
}
}
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 7e76498f86a..714f08c2629 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.70 2000/04/04 02:30:52 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.71 2000/04/12 17:15:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -55,19 +55,19 @@ static RewriteInfo *gatherRewriteMeta(Query *parsetree,
bool *instead_flag);
static bool rangeTableEntry_used(Node *node, int rt_index, int sublevels_up);
static bool attribute_used(Node *node, int rt_index, int attno,
- int sublevels_up);
+ int sublevels_up);
static bool modifyAggrefChangeVarnodes(Node *node, int rt_index, int new_index,
- int sublevels_up, int new_sublevels_up);
+ int sublevels_up, int new_sublevels_up);
static Node *modifyAggrefDropQual(Node *node, Node *targetNode);
static SubLink *modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree);
static Node *modifyAggrefQual(Node *node, Query *parsetree);
static Query *fireRIRrules(Query *parsetree);
static Query *Except_Intersect_Rewrite(Query *parsetree);
static void check_targetlists_are_compatible(List *prev_target,
- List *current_target);
+ List *current_target);
static void create_intersect_list(Node *ptr, List **intersect_list);
static Node *intersect_tree_analyze(Node *tree, Node *first_select,
- Node *parsetree);
+ Node *parsetree);
/*
* gatherRewriteMeta -
@@ -148,14 +148,15 @@ gatherRewriteMeta(Query *parsetree,
* referenced somewhere in var nodes of the query.
*/
-typedef struct {
+typedef struct
+{
int rt_index;
int sublevels_up;
} rangeTableEntry_used_context;
static bool
-rangeTableEntry_used_walker (Node *node,
- rangeTableEntry_used_context *context)
+rangeTableEntry_used_walker(Node *node,
+ rangeTableEntry_used_context *context)
{
if (node == NULL)
return false;
@@ -170,9 +171,10 @@ rangeTableEntry_used_walker (Node *node,
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -218,15 +220,16 @@ rangeTableEntry_used(Node *node, int rt_index, int sublevels_up)
* somewhere in the query
*/
-typedef struct {
+typedef struct
+{
int rt_index;
int attno;
int sublevels_up;
} attribute_used_context;
static bool
-attribute_used_walker (Node *node,
- attribute_used_context *context)
+attribute_used_walker(Node *node,
+ attribute_used_context *context)
{
if (node == NULL)
return false;
@@ -242,9 +245,10 @@ attribute_used_walker (Node *node,
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -296,11 +300,12 @@ attribute_used(Node *node, int rt_index, int attno, int sublevels_up)
* not having the option to adjust the vars' varlevelsup.
*
* NOTE: although this has the form of a walker, we cheat and modify the
- * Var nodes in-place. The given expression tree should have been copied
+ * Var nodes in-place. The given expression tree should have been copied
* earlier to ensure that no unwanted side-effects occur!
*/
-typedef struct {
+typedef struct
+{
int rt_index;
int new_index;
int sublevels_up;
@@ -309,7 +314,7 @@ typedef struct {
static bool
modifyAggrefChangeVarnodes_walker(Node *node,
- modifyAggrefChangeVarnodes_context *context)
+ modifyAggrefChangeVarnodes_context *context)
{
if (node == NULL)
return false;
@@ -328,9 +333,10 @@ modifyAggrefChangeVarnodes_walker(Node *node,
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -386,7 +392,7 @@ modifyAggrefChangeVarnodes(Node *node, int rt_index, int new_index,
* targetNode is an Aggref node somewhere within the given expression tree.
* Find the boolean operator that's presumably somewhere above it, and replace
* that whole operator expression with a constant TRUE. (This is NOT really
- * quite the right thing, but it handles simple cases. This whole set of
+ * quite the right thing, but it handles simple cases. This whole set of
* Aggref-in-qual routines needs to be thrown away when we can do subselects
* in FROM.)
*
@@ -439,8 +445,10 @@ static SubLink *
modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
{
List *aggVarNos;
+
/* rte points to old structure: */
RangeTblEntry *rte;
+
/* these point to newly-created structures: */
Query *subquery;
SubLink *sublink;
@@ -463,7 +471,7 @@ modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
tle = makeNode(TargetEntry);
tle->resdom = resdom;
- tle->expr = copyObject(aggref); /* make a modifiable copy! */
+ tle->expr = copyObject(aggref); /* make a modifiable copy! */
subquery = makeNode(Query);
@@ -488,10 +496,11 @@ modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
subquery->targetList = lcons(tle, NIL);
subquery->qual = modifyAggrefDropQual((Node *) parsetree->qual,
(Node *) aggref);
+
/*
- * If there are still aggs in the subselect's qual, give up.
- * Recursing would be a bad idea --- we'd likely produce an
- * infinite recursion. This whole technique is a crock, really...
+ * If there are still aggs in the subselect's qual, give up. Recursing
+ * would be a bad idea --- we'd likely produce an infinite recursion.
+ * This whole technique is a crock, really...
*/
if (checkExprHasAggs(subquery->qual))
elog(ERROR, "Cannot handle multiple aggregate functions in WHERE clause");
@@ -504,7 +513,8 @@ modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
/* Increment all varlevelsup fields in the new subquery */
IncrementVarSublevelsUp((Node *) subquery, 1, 0);
- /* Replace references to the target table with correct local varno, 1.
+ /*
+ * Replace references to the target table with correct local varno, 1.
* Note that because of previous line, these references have
* varlevelsup = 1, which must be changed to 0.
*/
@@ -537,11 +547,12 @@ modifyAggrefQual(Node *node, Query *parsetree)
parsetree->hasSubLinks = true;
return (Node *) sub;
}
+
/*
* Otherwise, fall through and copy the expr normally.
*
- * We do NOT recurse into subselects in this routine. It's sufficient
- * to get rid of aggregates that are in the qual expression proper.
+ * We do NOT recurse into subselects in this routine. It's sufficient to
+ * get rid of aggregates that are in the qual expression proper.
*/
return expression_tree_mutator(node, modifyAggrefQual,
(void *) parsetree);
@@ -585,12 +596,13 @@ make_null(Oid type)
* Replace Vars matching a given RT index with copies of TL expressions.
*/
-typedef struct {
- int rt_index;
- int sublevels_up;
- RangeTblEntry *rte;
- List *tlist;
- int *modified;
+typedef struct
+{
+ int rt_index;
+ int sublevels_up;
+ RangeTblEntry *rte;
+ List *tlist;
+ int *modified;
} apply_RIR_view_context;
static Node *
@@ -633,14 +645,15 @@ apply_RIR_view_mutator(Node *node,
}
/* otherwise fall through to copy the var normally */
}
+
/*
* Since expression_tree_mutator won't touch subselects, we have to
* handle them specially.
*/
if (IsA(node, SubLink))
{
- SubLink *sublink = (SubLink *) node;
- SubLink *newnode;
+ SubLink *sublink = (SubLink *) node;
+ SubLink *newnode;
FLATCOPY(newnode, sublink, SubLink);
MUTATE(newnode->lefthand, sublink->lefthand, List *,
@@ -653,8 +666,8 @@ apply_RIR_view_mutator(Node *node,
}
if (IsA(node, Query))
{
- Query *query = (Query *) node;
- Query *newnode;
+ Query *query = (Query *) node;
+ Query *newnode;
FLATCOPY(newnode, query, Query);
MUTATE(newnode->targetList, query->targetList, List *,
@@ -673,7 +686,7 @@ static Node *
apply_RIR_view(Node *node, int rt_index, RangeTblEntry *rte, List *tlist,
int *modified, int sublevels_up)
{
- apply_RIR_view_context context;
+ apply_RIR_view_context context;
context.rt_index = rt_index;
context.sublevels_up = sublevels_up;
@@ -718,18 +731,20 @@ ApplyRetrieveRule(Query *parsetree,
nothing = TRUE;
rtable = copyObject(parsetree->rtable);
- rt_length = length(rtable); /* original length, not counting rule */
+ rt_length = length(rtable); /* original length, not counting rule */
addedrtable = copyObject(rule_action->rtable);
- /* If the original rel wasn't in the join set, none of its spawn is.
+ /*
+ * If the original rel wasn't in the join set, none of its spawn is.
* If it was, then leave the spawn's flags as they are.
*/
- if (! relWasInJoinSet)
+ if (!relWasInJoinSet)
{
foreach(l, addedrtable)
{
RangeTblEntry *rte = lfirst(l);
+
rte->inJoinSet = false;
}
}
@@ -789,7 +804,7 @@ ApplyRetrieveRule(Query *parsetree,
if (relation_level)
{
- RangeTblEntry *rte = rt_fetch(rt_index, rtable);
+ RangeTblEntry *rte = rt_fetch(rt_index, rtable);
parsetree = (Query *) apply_RIR_view((Node *) parsetree,
rt_index, rte,
@@ -824,7 +839,7 @@ ApplyRetrieveRule(Query *parsetree,
* Apply fireRIRrules() to each subselect found in the given tree.
*
* NOTE: although this has the form of a walker, we cheat and modify the
- * SubLink nodes in-place. It is caller's responsibility to ensure that
+ * SubLink nodes in-place. It is caller's responsibility to ensure that
* no unwanted side-effects occur!
*/
static bool
@@ -883,8 +898,9 @@ fireRIRrules(Query *parsetree)
int i;
List *l;
- /* don't try to convert this into a foreach loop, because
- * rtable list can get changed each time through...
+ /*
+ * don't try to convert this into a foreach loop, because rtable list
+ * can get changed each time through...
*/
rt_index = 0;
while (rt_index < length(parsetree->rtable))
@@ -894,13 +910,13 @@ fireRIRrules(Query *parsetree)
rte = rt_fetch(rt_index, parsetree->rtable);
/*
- * If the table is not one named in the original FROM clause
- * then it must be referenced in the query, or we ignore it.
- * This prevents infinite expansion loop due to new rtable
- * entries inserted by expansion of a rule.
+ * If the table is not one named in the original FROM clause then
+ * it must be referenced in the query, or we ignore it. This
+ * prevents infinite expansion loop due to new rtable entries
+ * inserted by expansion of a rule.
*/
- if (! rte->inFromCl && rt_index != parsetree->resultRelation &&
- ! rangeTableEntry_used((Node *) parsetree, rt_index, 0))
+ if (!rte->inFromCl && rt_index != parsetree->resultRelation &&
+ !rangeTableEntry_used((Node *) parsetree, rt_index, 0))
{
/* Make sure the planner ignores it too... */
rte->inJoinSet = false;
@@ -915,7 +931,8 @@ fireRIRrules(Query *parsetree)
continue;
}
- relWasInJoinSet = rte->inJoinSet; /* save before possibly clearing */
+ relWasInJoinSet = rte->inJoinSet; /* save before possibly
+ * clearing */
/*
* Collect the RIR rules that we must apply
@@ -930,16 +947,18 @@ fireRIRrules(Query *parsetree)
if (rule->attrno > 0)
{
/* per-attr rule; do we need it? */
- if (! attribute_used((Node *) parsetree,
- rt_index,
- rule->attrno, 0))
+ if (!attribute_used((Node *) parsetree,
+ rt_index,
+ rule->attrno, 0))
continue;
}
else
{
- /* Rel-wide ON SELECT DO INSTEAD means this is a view.
- * Remove the view from the planner's join target set,
- * or we'll get no rows out because view itself is empty!
+
+ /*
+ * Rel-wide ON SELECT DO INSTEAD means this is a view.
+ * Remove the view from the planner's join target set, or
+ * we'll get no rows out because view itself is empty!
*/
if (rule->isInstead)
rte->inJoinSet = false;
@@ -1448,7 +1467,7 @@ BasicQueryRewrite(Query *parsetree)
/*
* If the query was marked having aggregates, check if this is
- * still true after rewriting. Ditto for sublinks. Note there
+ * still true after rewriting. Ditto for sublinks. Note there
* should be no aggs in the qual at this point.
*/
if (query->hasAggs)
@@ -1663,6 +1682,7 @@ Except_Intersect_Rewrite(Query *parsetree)
*/
if (parsetree->commandType == CMD_INSERT)
{
+
/*
* The result relation ( = the one to insert into) has to be
* attached to the rtable list of the new top node
@@ -1825,7 +1845,8 @@ Except_Intersect_Rewrite(Query *parsetree)
/*
* Also prepare the list of Opers that must be used for the
- * comparisons (they depend on the specific datatypes involved!)
+ * comparisons (they depend on the specific datatypes
+ * involved!)
*/
left_expr = n->lefthand;
right_expr = ((Query *) (n->subselect))->targetList;
@@ -1848,8 +1869,8 @@ Except_Intersect_Rewrite(Query *parsetree)
if (opform->oprresult != BOOLOID)
elog(ERROR, "parser: '%s' must return 'bool' to be used with quantified predicate subquery", op);
- newop = makeOper(oprid(optup),/* opno */
- InvalidOid, /* opid */
+ newop = makeOper(oprid(optup), /* opno */
+ InvalidOid, /* opid */
opform->oprresult,
0,
NULL);
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c
index e8224d80b3a..a4935b78c48 100644
--- a/src/backend/rewrite/rewriteManip.c
+++ b/src/backend/rewrite/rewriteManip.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.45 2000/03/16 03:23:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.46 2000/04/12 17:15:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -52,7 +52,8 @@ checkExprHasAggs_walker(Node *node, void *context)
if (node == NULL)
return false;
if (IsA(node, Aggref))
- return true; /* abort the tree traversal and return true */
+ return true; /* abort the tree traversal and return
+ * true */
return expression_tree_walker(node, checkExprHasAggs_walker, context);
}
@@ -73,7 +74,8 @@ checkExprHasSubLink_walker(Node *node, void *context)
if (node == NULL)
return false;
if (IsA(node, SubLink))
- return true; /* abort the tree traversal and return true */
+ return true; /* abort the tree traversal and return
+ * true */
return expression_tree_walker(node, checkExprHasSubLink_walker, context);
}
@@ -86,11 +88,12 @@ checkExprHasSubLink_walker(Node *node, void *context)
* The varnoold fields are adjusted similarly.
*
* NOTE: although this has the form of a walker, we cheat and modify the
- * Var nodes in-place. The given expression tree should have been copied
+ * Var nodes in-place. The given expression tree should have been copied
* earlier to ensure that no unwanted side-effects occur!
*/
-typedef struct {
+typedef struct
+{
int offset;
int sublevels_up;
} OffsetVarNodes_context;
@@ -113,9 +116,10 @@ OffsetVarNodes_walker(Node *node, OffsetVarNodes_context *context)
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -162,14 +166,15 @@ OffsetVarNodes(Node *node, int offset, int sublevels_up)
*
* Find all Var nodes in the given tree belonging to a specific relation
* (identified by sublevels_up and rt_index), and change their varno fields
- * to 'new_index'. The varnoold fields are changed too.
+ * to 'new_index'. The varnoold fields are changed too.
*
* NOTE: although this has the form of a walker, we cheat and modify the
- * Var nodes in-place. The given expression tree should have been copied
+ * Var nodes in-place. The given expression tree should have been copied
* earlier to ensure that no unwanted side-effects occur!
*/
-typedef struct {
+typedef struct
+{
int rt_index;
int new_index;
int sublevels_up;
@@ -194,9 +199,10 @@ ChangeVarNodes_walker(Node *node, ChangeVarNodes_context *context)
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -253,11 +259,12 @@ ChangeVarNodes(Node *node, int rt_index, int new_index, int sublevels_up)
* to the expression's original query level or parents thereof.
*
* NOTE: although this has the form of a walker, we cheat and modify the
- * Var nodes in-place. The given expression tree should have been copied
+ * Var nodes in-place. The given expression tree should have been copied
* earlier to ensure that no unwanted side-effects occur!
*/
-typedef struct {
+typedef struct
+{
int delta_sublevels_up;
int min_sublevels_up;
} IncrementVarSublevelsUp_context;
@@ -278,9 +285,10 @@ IncrementVarSublevelsUp_walker(Node *node,
}
if (IsA(node, SubLink))
{
+
/*
- * Standard expression_tree_walker will not recurse into subselect,
- * but here we must do so.
+ * Standard expression_tree_walker will not recurse into
+ * subselect, but here we must do so.
*/
SubLink *sub = (SubLink *) node;
@@ -346,7 +354,8 @@ AddQual(Query *parsetree, Node *qual)
/*
* Make sure query is marked correctly if added qual has sublinks or
- * aggregates (not sure it can ever have aggs, but sublinks definitely).
+ * aggregates (not sure it can ever have aggs, but sublinks
+ * definitely).
*/
parsetree->hasAggs |= checkExprHasAggs(copy);
parsetree->hasSubLinks |= checkExprHasSubLink(copy);
@@ -376,7 +385,8 @@ AddHavingQual(Query *parsetree, Node *havingQual)
/*
* Make sure query is marked correctly if added qual has sublinks or
- * aggregates (not sure it can ever have aggs, but sublinks definitely).
+ * aggregates (not sure it can ever have aggs, but sublinks
+ * definitely).
*/
parsetree->hasAggs |= checkExprHasAggs(copy);
parsetree->hasSubLinks |= checkExprHasSubLink(copy);
@@ -396,6 +406,7 @@ AddNotHavingQual(Query *parsetree, Node *havingQual)
AddHavingQual(parsetree, notqual);
}
+
#endif
void
@@ -435,7 +446,8 @@ AddGroupClause(Query *parsetree, List *group_by, List *tlist)
/* copy the groupclause's TLE from the old tlist */
tle = (TargetEntry *) copyObject(tle);
- /* The ressortgroupref number in the old tlist might be already
+ /*
+ * The ressortgroupref number in the old tlist might be already
* taken in the new tlist, so force assignment of a new number.
*/
tle->resdom->ressortgroupref = 0;
@@ -528,10 +540,11 @@ FindMatchingTLEntry(List *tlist, char *e_attname)
* entry with matching resno from targetlist, if there is one.
*/
-typedef struct {
- RewriteInfo *info;
- List *targetlist;
- int sublevels_up;
+typedef struct
+{
+ RewriteInfo *info;
+ List *targetlist;
+ int sublevels_up;
} ResolveNew_context;
static Node *
@@ -579,14 +592,15 @@ ResolveNew_mutator(Node *node, ResolveNew_context *context)
}
/* otherwise fall through to copy the var normally */
}
+
/*
* Since expression_tree_mutator won't touch subselects, we have to
* handle them specially.
*/
if (IsA(node, SubLink))
{
- SubLink *sublink = (SubLink *) node;
- SubLink *newnode;
+ SubLink *sublink = (SubLink *) node;
+ SubLink *newnode;
FLATCOPY(newnode, sublink, SubLink);
MUTATE(newnode->lefthand, sublink->lefthand, List *,
@@ -599,8 +613,8 @@ ResolveNew_mutator(Node *node, ResolveNew_context *context)
}
if (IsA(node, Query))
{
- Query *query = (Query *) node;
- Query *newnode;
+ Query *query = (Query *) node;
+ Query *newnode;
/*
* XXX original code for ResolveNew only recursed into qual field
@@ -624,7 +638,7 @@ static Node *
ResolveNew(Node *node, RewriteInfo *info, List *targetlist,
int sublevels_up)
{
- ResolveNew_context context;
+ ResolveNew_context context;
context.info = info;
context.targetlist = targetlist;
@@ -637,13 +651,13 @@ void
FixNew(RewriteInfo *info, Query *parsetree)
{
info->rule_action->targetList = (List *)
- ResolveNew((Node *) info->rule_action->targetList,
- info, parsetree->targetList, 0);
+ ResolveNew((Node *) info->rule_action->targetList,
+ info, parsetree->targetList, 0);
info->rule_action->qual = ResolveNew(info->rule_action->qual,
info, parsetree->targetList, 0);
/* XXX original code didn't fix havingQual; presumably an oversight? */
info->rule_action->havingQual = ResolveNew(info->rule_action->havingQual,
- info, parsetree->targetList, 0);
+ info, parsetree->targetList, 0);
}
/*
@@ -656,14 +670,15 @@ FixNew(RewriteInfo *info, Query *parsetree)
* XXX Why is this not unified with apply_RIR_view()?
*/
-typedef struct {
- List *rtable;
- List *targetlist;
- int rt_index;
- int attr_num;
- int *modified;
- int *badsql;
- int sublevels_up;
+typedef struct
+{
+ List *rtable;
+ List *targetlist;
+ int rt_index;
+ int attr_num;
+ int *modified;
+ int *badsql;
+ int sublevels_up;
} HandleRIRAttributeRule_context;
static Node *
@@ -691,7 +706,7 @@ HandleRIRAttributeRule_mutator(Node *node,
}
else
{
- char *name_to_look_for;
+ char *name_to_look_for;
name_to_look_for = get_attname(getrelid(this_varno,
context->rtable),
@@ -707,7 +722,11 @@ HandleRIRAttributeRule_mutator(Node *node,
return make_null(var->vartype);
/* Make a copy of the tlist item to return */
n = copyObject(n);
- /* Adjust varlevelsup if tlist item is from higher query */
+
+ /*
+ * Adjust varlevelsup if tlist item is from higher
+ * query
+ */
if (this_varlevelsup > 0)
IncrementVarSublevelsUp(n, this_varlevelsup, 0);
return n;
@@ -716,14 +735,15 @@ HandleRIRAttributeRule_mutator(Node *node,
}
/* otherwise fall through to copy the var normally */
}
+
/*
* Since expression_tree_mutator won't touch subselects, we have to
* handle them specially.
*/
if (IsA(node, SubLink))
{
- SubLink *sublink = (SubLink *) node;
- SubLink *newnode;
+ SubLink *sublink = (SubLink *) node;
+ SubLink *newnode;
FLATCOPY(newnode, sublink, SubLink);
MUTATE(newnode->lefthand, sublink->lefthand, List *,
@@ -736,12 +756,12 @@ HandleRIRAttributeRule_mutator(Node *node,
}
if (IsA(node, Query))
{
- Query *query = (Query *) node;
- Query *newnode;
+ Query *query = (Query *) node;
+ Query *newnode;
/*
* XXX original code for HandleRIRAttributeRule only recursed into
- * qual field of subquery. I'm assuming that was an oversight ...
+ * qual field of subquery. I'm assuming that was an oversight ...
*/
FLATCOPY(newnode, query, Query);
@@ -766,7 +786,7 @@ HandleRIRAttributeRule(Query *parsetree,
int *modified,
int *badsql)
{
- HandleRIRAttributeRule_context context;
+ HandleRIRAttributeRule_context context;
context.rtable = rtable;
context.targetlist = targetlist;
@@ -776,7 +796,7 @@ HandleRIRAttributeRule(Query *parsetree,
context.badsql = badsql;
context.sublevels_up = 0;
- parsetree->targetList = (List *)
+ parsetree->targetList = (List *)
HandleRIRAttributeRule_mutator((Node *) parsetree->targetList,
&context);
parsetree->qual = HandleRIRAttributeRule_mutator(parsetree->qual,
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index d3fda73d48e..821f93440e2 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.35 2000/01/26 05:56:50 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.36 2000/04/12 17:15:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -125,8 +125,8 @@ RemoveRewriteRule(char *ruleName)
/*
* Delete any comments associated with this rule
*
- */
-
+ */
+
DeleteComments(ruleId);
/*
@@ -168,13 +168,14 @@ RelationRemoveRules(Oid relid)
scanDesc = heap_beginscan(RewriteRelation,
0, SnapshotNow, 1, &scanKeyData);
- while (HeapTupleIsValid(tuple = heap_getnext(scanDesc, 0))) {
+ while (HeapTupleIsValid(tuple = heap_getnext(scanDesc, 0)))
+ {
+
+ /*** Delete any comments associated with this relation ***/
- /*** Delete any comments associated with this relation ***/
+ DeleteComments(tuple->t_data->t_oid);
- DeleteComments(tuple->t_data->t_oid);
-
- heap_delete(RewriteRelation, &tuple->t_self, NULL);
+ heap_delete(RewriteRelation, &tuple->t_self, NULL);
}