]> granicus.if.org Git - postgresql/commitdiff
equal() needs a case for Aggref nodes, as shown by:
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Jun 1999 17:46:40 +0000 (17:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Jun 1999 17:46:40 +0000 (17:46 +0000)
regression=> select sum(q1) from int8_tbl group by q2 order by sum(q1);
NOTICE:  equal: don't know whether nodes of type 107 are equal

src/backend/nodes/equalfuncs.c

index e08787b79b91bc13f2e0ddb68eaf5345248891e3..6a680190b201c9b56a09a547bce456b94a8ca7a1 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.38 1999/05/25 22:41:13 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.39 1999/06/06 17:46:40 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -257,6 +257,27 @@ _equalParam(Param *a, Param *b)
        return true;
 }
 
+/*
+ *     Aggref is a subclass of Expr.
+ */
+static bool
+_equalAggref(Aggref *a, Aggref *b)
+{
+       if (strcmp(a->aggname, b->aggname) != 0)
+               return false;
+       if (a->basetype != b->basetype)
+               return false;
+       if (a->aggtype != b->aggtype)
+               return false;
+       if (!equal(a->target, b->target))
+               return false;
+       if (a->aggno != b->aggno)
+               return false;
+       if (a->usenulls != b->usenulls)
+               return false;
+       return true;
+}
+
 /*
  *     Func is a subclass of Expr.
  */
@@ -769,6 +790,9 @@ equal(void *a, void *b)
                case T_Param:
                        retval = _equalParam(a, b);
                        break;
+               case T_Aggref:
+                       retval = _equalAggref(a, b);
+                       break;
                case T_Func:
                        retval = _equalFunc(a, b);
                        break;