pgsql: Allow parallel aggregate on string_agg and array_agg

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Allow parallel aggregate on string_agg and array_agg
Date: 2023-01-23 04:35:40
Message-ID: E1pJoYV-0050rd-SN@gemulon.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Allow parallel aggregate on string_agg and array_agg

This adds combine, serial and deserial functions for the array_agg() and
string_agg() aggregate functions, thus allowing these aggregates to
partake in partial aggregations. This allows both parallel aggregation to
take place when these aggregates are present and also allows additional
partition-wise aggregation plan shapes to include plans that require
additional aggregation once the partially aggregated results from the
partitions have been combined.

Author: David Rowley
Reviewed-by: Andres Freund, Tomas Vondra, Stephen Frost, Tom Lane
Discussion: https://postgr.es/m/CAKJS1f9sx_6GTcvd6TMuZnNtCh0VhBzhX6FZqw17TgVFH-ga_A@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/16fd03e956540d1b47b743f6a84f37c54ac93dd4

Modified Files
--------------
doc/src/sgml/func.sgml | 6 +-
src/backend/optimizer/prep/prepagg.c | 28 +-
src/backend/parser/parse_agg.c | 37 +-
src/backend/utils/adt/array_userfuncs.c | 624 +++++++++++++++++++++++++++++++
src/backend/utils/adt/arrayfuncs.c | 20 +-
src/backend/utils/adt/varlena.c | 207 +++++++++-
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_aggregate.dat | 13 +-
src/include/catalog/pg_proc.dat | 27 ++
src/include/parser/parse_agg.h | 2 +
src/include/utils/array.h | 3 +
src/test/regress/expected/aggregates.out | 98 +++++
src/test/regress/sql/aggregates.sql | 62 +++
13 files changed, 1101 insertions(+), 28 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2023-01-23 04:59:52 pgsql: pg_walinspect: Add pg_get_wal_fpi_info()
Previous Message Tom Lane 2023-01-22 19:08:57 pgsql: Track logrep apply workers' last start times to avoid useless wa