pgsql: Fix null-bitmap combining in array_agg_array_combine(). - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix null-bitmap combining in array_agg_array_combine().
Date
Msg-id E1w9nXa-003GPu-18@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix null-bitmap combining in array_agg_array_combine().

This code missed the need to update the combined state's
nullbitmap if state1 already had a bitmap but state2 didn't.
We need to extend the existing bitmap with 1's but didn't.
This could result in wrong output from a parallelized
array_agg(anyarray) calculation, if the input has a mix of
null and non-null elements.  The errors depended on timing
of the parallel workers, and therefore would vary from one
run to another.

Also install guards against integer overflow when calculating
the combined object's sizes, and make some trivial cosmetic
improvements.

Author: Dmytro Astapov <dastapov@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/CAFQUnFj2pQ1HbGp69+w2fKqARSfGhAi9UOb+JjyExp7kx3gsqA@mail.gmail.com
Backpatch-through: 16

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/bb959269e382eb75f23f30607ba27b0c67b36111

Modified Files
--------------
src/backend/utils/adt/array_userfuncs.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)


pgsql-committers by date:

Previous
From: Robert Haas
Date:
Subject: pgsql: Add a guc_check_handler to the EXPLAIN extension mechanism.
Next
From: Tom Lane
Date:
Subject: pgsql: Add missing .gitignore files.