diff options
Diffstat (limited to 'src/backend/nodes/equalfuncs.c')
-rw-r--r-- | src/backend/nodes/equalfuncs.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index d483221fb7a..d7928a99176 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -208,6 +208,21 @@ _equalAggref(const Aggref *a, const Aggref *b) } static bool +_equalGroupingFunc(const GroupingFunc *a, const GroupingFunc *b) +{ + COMPARE_NODE_FIELD(args); + + /* + * We must not compare the refs or cols field + */ + + COMPARE_SCALAR_FIELD(agglevelsup); + COMPARE_LOCATION_FIELD(location); + + return true; +} + +static bool _equalWindowFunc(const WindowFunc *a, const WindowFunc *b) { COMPARE_SCALAR_FIELD(winfnoid); @@ -896,6 +911,7 @@ _equalQuery(const Query *a, const Query *b) COMPARE_NODE_FIELD(onConflict); COMPARE_NODE_FIELD(returningList); COMPARE_NODE_FIELD(groupClause); + COMPARE_NODE_FIELD(groupingSets); COMPARE_NODE_FIELD(havingQual); COMPARE_NODE_FIELD(windowClause); COMPARE_NODE_FIELD(distinctClause); @@ -2427,6 +2443,16 @@ _equalSortGroupClause(const SortGroupClause *a, const SortGroupClause *b) } static bool +_equalGroupingSet(const GroupingSet *a, const GroupingSet *b) +{ + COMPARE_SCALAR_FIELD(kind); + COMPARE_NODE_FIELD(content); + COMPARE_LOCATION_FIELD(location); + + return true; +} + +static bool _equalWindowClause(const WindowClause *a, const WindowClause *b) { COMPARE_STRING_FIELD(name); @@ -2693,6 +2719,9 @@ equal(const void *a, const void *b) case T_Aggref: retval = _equalAggref(a, b); break; + case T_GroupingFunc: + retval = _equalGroupingFunc(a, b); + break; case T_WindowFunc: retval = _equalWindowFunc(a, b); break; @@ -3249,6 +3278,9 @@ equal(const void *a, const void *b) case T_SortGroupClause: retval = _equalSortGroupClause(a, b); break; + case T_GroupingSet: + retval = _equalGroupingSet(a, b); + break; case T_WindowClause: retval = _equalWindowClause(a, b); break; |