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.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 5888f49515e..3ddc8d6c98a 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.59 2000/02/07 04:40:57 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.60 2000/02/15 03:37:08 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -96,6 +96,17 @@ _equalExpr(Expr *a, Expr *b)
}
static bool
+_equalAttr(Attr *a, Attr *b)
+{
+ if (!strcmp(a->relname, b->relname))
+ return false;
+ if (length(a->attrs) != length(b->attrs))
+ return false;
+
+ return equal(a->attrs, b->attrs);
+}
+
+static bool
_equalVar(Var *a, Var *b)
{
if (a->varno != b->varno)
@@ -633,14 +644,14 @@ _equalRangeTblEntry(RangeTblEntry *a, RangeTblEntry *b)
if (a->relname != b->relname)
return false;
}
- if (a->refname && b->refname)
+ if (a->ref && b->ref)
{
- if (strcmp(a->refname, b->refname) != 0)
+ if (! equal(a->ref, b->ref))
return false;
}
else
{
- if (a->refname != b->refname)
+ if (a->ref != b->ref)
return false;
}
if (a->relid != b->relid)
@@ -845,6 +856,9 @@ equal(void *a, void *b)
case T_EState:
retval = _equalEState(a, b);
break;
+ case T_Attr:
+ retval = _equalAttr(a, b);
+ break;
case T_Integer:
case T_String:
case T_Float: