Re: [PATCH] GROUP BY ALL

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, "David G. Johnston" <david.g.johnston@gmail.com>, David Christensen <david@pgguru.net>, Jelte Fennema-Nio <postgres@jeltef.nl>
Date: 2025-09-26T14:11:55Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add GROUP BY ALL.

  2. Refactor to avoid code duplication in transformPLAssignStmt.

  3. Fix missed copying of groupDistinct in transformPLAssignStmt.

Peter Eisentraut <peter@eisentraut.org> writes:
> The initially proposed patch appears to have the right idea overall. 
> But it does not handle more complex cases like
>      SELECT a, SUM(b)+a FROM t1 GROUP BY ALL;

> (For explanation:  GROUP BY ALL expands to all select list entries that 
> do not contain aggregates.  So the above would expand to
>      SELECT a, SUM(b)+a FROM t1 GROUP BY a;
> which should then be rejected based on the existing rules.)

I thought I understood this definition, up till your last
comment.  What's invalid about that expanded query?

regression=# create table t1 (a int, b int);
CREATE TABLE
regression=# SELECT a, SUM(b)+a FROM t1 GROUP BY a;
 a | ?column? 
---+----------
(0 rows)


			regards, tom lane