aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/equalfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/equalfuncs.c')
-rw-r--r--src/backend/nodes/equalfuncs.c123
1 files changed, 75 insertions, 48 deletions
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index b059e5cd5f0..51a7a03fc1b 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -20,7 +20,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.72 2000/08/11 23:45:31 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.73 2000/09/12 21:06:49 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -257,6 +257,26 @@ _equalSubLink(SubLink *a, SubLink *b)
}
static bool
+_equalArrayRef(ArrayRef *a, ArrayRef *b)
+{
+ if (a->refelemtype != b->refelemtype)
+ return false;
+ if (a->refattrlength != b->refattrlength)
+ return false;
+ if (a->refelemlength != b->refelemlength)
+ return false;
+ if (a->refelembyval != b->refelembyval)
+ return false;
+ if (!equal(a->refupperindexpr, b->refupperindexpr))
+ return false;
+ if (!equal(a->reflowerindexpr, b->reflowerindexpr))
+ return false;
+ if (!equal(a->refexpr, b->refexpr))
+ return false;
+ return equal(a->refassgnexpr, b->refassgnexpr);
+}
+
+static bool
_equalFieldSelect(FieldSelect *a, FieldSelect *b)
{
if (!equal(a->arg, b->arg))
@@ -283,23 +303,37 @@ _equalRelabelType(RelabelType *a, RelabelType *b)
}
static bool
-_equalArrayRef(ArrayRef *a, ArrayRef *b)
+_equalRangeTblRef(RangeTblRef *a, RangeTblRef *b)
{
- if (a->refelemtype != b->refelemtype)
+ if (a->rtindex != b->rtindex)
return false;
- if (a->refattrlength != b->refattrlength)
+
+ return true;
+}
+
+static bool
+_equalJoinExpr(JoinExpr *a, JoinExpr *b)
+{
+ if (a->jointype != b->jointype)
return false;
- if (a->refelemlength != b->refelemlength)
+ if (a->isNatural != b->isNatural)
return false;
- if (a->refelembyval != b->refelembyval)
+ if (!equal(a->larg, b->larg))
return false;
- if (!equal(a->refupperindexpr, b->refupperindexpr))
+ if (!equal(a->rarg, b->rarg))
return false;
- if (!equal(a->reflowerindexpr, b->reflowerindexpr))
+ if (!equal(a->using, b->using))
return false;
- if (!equal(a->refexpr, b->refexpr))
+ if (!equal(a->quals, b->quals))
return false;
- return equal(a->refassgnexpr, b->refassgnexpr);
+ if (!equal(a->alias, b->alias))
+ return false;
+ if (!equal(a->colnames, b->colnames))
+ return false;
+ if (!equal(a->colvars, b->colvars))
+ return false;
+
+ return true;
}
/*
@@ -370,6 +404,8 @@ _equalIndexPath(IndexPath *a, IndexPath *b)
return false;
if (!equali(a->joinrelids, b->joinrelids))
return false;
+ if (a->alljoinquals != b->alljoinquals)
+ return false;
/*
* Skip 'rows' because of possibility of floating-point roundoff
@@ -395,6 +431,8 @@ _equalJoinPath(JoinPath *a, JoinPath *b)
{
if (!_equalPath((Path *) a, (Path *) b))
return false;
+ if (a->jointype != b->jointype)
+ return false;
if (!equal(a->outerjoinpath, b->outerjoinpath))
return false;
if (!equal(a->innerjoinpath, b->innerjoinpath))
@@ -457,6 +495,8 @@ _equalRestrictInfo(RestrictInfo *a, RestrictInfo *b)
{
if (!equal(a->clause, b->clause))
return false;
+ if (a->isjoinqual != b->isjoinqual)
+ return false;
if (!equal(a->subclauseindices, b->subclauseindices))
return false;
if (a->mergejoinoperator != b->mergejoinoperator)
@@ -557,6 +597,8 @@ _equalQuery(Query *a, Query *b)
return false;
if (!equal(a->rtable, b->rtable))
return false;
+ if (!equal(a->jointree, b->jointree))
+ return false;
if (!equal(a->targetList, b->targetList))
return false;
if (!equal(a->qual, b->qual))
@@ -1476,31 +1518,33 @@ _equalTypeCast(TypeCast *a, TypeCast *b)
}
static bool
-_equalRelExpr(RelExpr *a, RelExpr *b)
+_equalSortGroupBy(SortGroupBy *a, SortGroupBy *b)
{
- if (!equalstr(a->relname, b->relname))
+ if (!equalstr(a->useOp, b->useOp))
return false;
- if (a->inh != b->inh)
+ if (!equal(a->node, b->node))
return false;
return true;
}
static bool
-_equalSortGroupBy(SortGroupBy *a, SortGroupBy *b)
+_equalRangeVar(RangeVar *a, RangeVar *b)
{
- if (!equalstr(a->useOp, b->useOp))
+ if (!equalstr(a->relname, b->relname))
return false;
- if (!equal(a->node, b->node))
+ if (a->inh != b->inh)
+ return false;
+ if (!equal(a->name, b->name))
return false;
return true;
}
static bool
-_equalRangeVar(RangeVar *a, RangeVar *b)
+_equalRangeSubselect(RangeSubselect *a, RangeSubselect *b)
{
- if (!equal(a->relExpr, b->relExpr))
+ if (!equal(a->subquery, b->subquery))
return false;
if (!equal(a->name, b->name))
return false;
@@ -1605,17 +1649,16 @@ _equalRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b)
{
if (!equalstr(a->relname, b->relname))
return false;
- if (!equal(a->ref, b->ref))
- return false;
- /* XXX what about eref? */
if (a->relid != b->relid)
return false;
+ if (!equal(a->alias, b->alias))
+ return false;
+ if (!equal(a->eref, b->eref))
+ return false;
if (a->inh != b->inh)
return false;
if (a->inFromCl != b->inFromCl)
return false;
- if (a->inJoinSet != b->inJoinSet)
- return false;
if (a->skipAcl != b->skipAcl)
return false;
@@ -1645,25 +1688,6 @@ _equalRowMark(RowMark *a, RowMark *b)
}
static bool
-_equalJoinExpr(JoinExpr *a, JoinExpr *b)
-{
- if (a->jointype != b->jointype)
- return false;
- if (a->isNatural != b->isNatural)
- return false;
- if (!equal(a->larg, b->larg))
- return false;
- if (!equal(a->rarg, b->rarg))
- return false;
- if (!equal(a->alias, b->alias))
- return false;
- if (!equal(a->quals, b->quals))
- return false;
-
- return true;
-}
-
-static bool
_equalFkConstraint(FkConstraint *a, FkConstraint *b)
{
if (!equalstr(a->constr_name, b->constr_name))
@@ -1808,6 +1832,12 @@ equal(void *a, void *b)
case T_RelabelType:
retval = _equalRelabelType(a, b);
break;
+ case T_RangeTblRef:
+ retval = _equalRangeTblRef(a, b);
+ break;
+ case T_JoinExpr:
+ retval = _equalJoinExpr(a, b);
+ break;
case T_RelOptInfo:
retval = _equalRelOptInfo(a, b);
@@ -2067,15 +2097,15 @@ equal(void *a, void *b)
case T_TypeCast:
retval = _equalTypeCast(a, b);
break;
- case T_RelExpr:
- retval = _equalRelExpr(a, b);
- break;
case T_SortGroupBy:
retval = _equalSortGroupBy(a, b);
break;
case T_RangeVar:
retval = _equalRangeVar(a, b);
break;
+ case T_RangeSubselect:
+ retval = _equalRangeSubselect(a, b);
+ break;
case T_TypeName:
retval = _equalTypeName(a, b);
break;
@@ -2104,9 +2134,6 @@ equal(void *a, void *b)
/* GroupClause is equivalent to SortClause */
retval = _equalSortClause(a, b);
break;
- case T_JoinExpr:
- retval = _equalJoinExpr(a, b);
- break;
case T_CaseExpr:
retval = _equalCaseExpr(a, b);
break;