Skip to content

Commit 48c1887

Browse files
committed
equal() needs a case for Aggref nodes, as shown by:
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
1 parent dfaf9fb commit 48c1887

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/backend/nodes/equalfuncs.c

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.38 1999/05/25 22:41:13 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.39 1999/06/06 17:46:40 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -257,6 +257,27 @@ _equalParam(Param *a, Param *b)
257257
return true;
258258
}
259259

260+
/*
261+
* Aggref is a subclass of Expr.
262+
*/
263+
static bool
264+
_equalAggref(Aggref *a, Aggref *b)
265+
{
266+
if (strcmp(a->aggname, b->aggname) != 0)
267+
return false;
268+
if (a->basetype != b->basetype)
269+
return false;
270+
if (a->aggtype != b->aggtype)
271+
return false;
272+
if (!equal(a->target, b->target))
273+
return false;
274+
if (a->aggno != b->aggno)
275+
return false;
276+
if (a->usenulls != b->usenulls)
277+
return false;
278+
return true;
279+
}
280+
260281
/*
261282
* Func is a subclass of Expr.
262283
*/
@@ -769,6 +790,9 @@ equal(void *a, void *b)
769790
case T_Param:
770791
retval = _equalParam(a, b);
771792
break;
793+
case T_Aggref:
794+
retval = _equalAggref(a, b);
795+
break;
772796
case T_Func:
773797
retval = _equalFunc(a, b);
774798
break;

0 commit comments

Comments
 (0)