Re: Eager aggregation, take 3 - Mailing list pgsql-hackers

From jian he
Subject Re: Eager aggregation, take 3
Date
Msg-id CACJufxGFcMgM5LCioBXENgp=pbZUhU-yKz1fPuPs_8OLh-850w@mail.gmail.com
Whole thread Raw
In response to Re: Eager aggregation, take 3  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
hi.
still trying to understand v13. found a bug.

minimum test :
drop table if exists t1, t2;
CREATE TABLE t1 (a int, b int, c int);
CREATE TABLE t2 (a int, b int, c int);
SET enable_eager_aggregate TO on;
explain(costs off, settings) SELECT avg(t2.a), t1.c FROM t1 JOIN t2 ON
t1.b = t2.b GROUP BY t1.c having grouping(t1.c) > 0;


create_agg_clause_infos
    foreach(lc, tlist_exprs)
    {
        Expr       *expr = (Expr *) lfirst(lc);
        if (IsA(expr, GroupingFunc))
            return;
    }
    if (root->parse->havingQual != NULL)
    {
        List       *having_exprs;
        having_exprs = pull_var_clause((Node *) root->parse->havingQual,
                                       PVC_INCLUDE_AGGREGATES |
                                       PVC_RECURSE_PLACEHOLDERS);
        if (having_exprs != NIL)
        {
            tlist_exprs = list_concat(tlist_exprs, having_exprs);
            list_free(having_exprs);
        }
    }

havingQual can have GroupingFunc.
if that happens, then segmentation fault.



pgsql-hackers by date:

Previous
From: Daniel Gustafsson
Date:
Subject: Re: Fix typos where 'the' was repeated
Next
From: Jesper Pedersen
Date:
Subject: Re: protocol-level wait-for-LSN