Re: [PATCH] GROUP BY ALL

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: David Christensen <david@pgguru.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter@eisentraut.org>, Andrey Borodin <x4mmm@yandex-team.ru>, pgsql-hackers <pgsql-hackers@postgresql.org>, "David G. Johnston" <david.g.johnston@gmail.com>, Jelte Fennema-Nio <postgres@jeltef.nl>
Date: 2025-09-29T23:46:25Z
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.


> On Sep 29, 2025, at 04:34, David Christensen <david@pgguru.net> wrote:
> 
> On Sun, Sep 28, 2025 at 2:18 PM David Christensen <david@pgguru.net <mailto:david@pgguru.net>> wrote:
>> 
>> On Sat, Sep 27, 2025 at 5:23 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> 
>>> Here's a v6 that's rebased up to HEAD and contains fixes for the
>>> semantic issues we discussed.  It still lacks documentation, but
>>> otherwise I think it's about ready to go.
>> 
>> Here is v7 with a stab at docs; fairly minimal at this point, but
>> touching the two areas that are likely to need adjusting.  When
>> adjusting the docs for sql-select, I noticed that the grammar also
>> supports `GROUP BY ALL <grouping_elements>`, so I also added a test to
>> ensure that this syntax is explicitly supported. (It seems like it
>> works as-is without further grammar adjustments, but I was a little
>> worried when I first saw that fact... :D)  Not sure that
>> aggregates.sql is still the right place for all of these bits, but it
>> does seem like having all things `GROUP BY ALL`-related tested in the
>> same place is a nice property, so leaving there for now.
> 
> This time with attachment!
> <v7-0001-Add-GROUP-BY-ALL.patch>


A nit comment for the doc:

```
+    not contain either an aggregate function or a window function in their
+    expression list.  This can greatly simplify ad-hoc exploration of data.
+   </para>
```

“In their expression list” => “in the <literal>SELECT</literal> list"

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/