pgsql: Fix sharing Agg transition state of DISTINCT or ordered aggs.

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix sharing Agg transition state of DISTINCT or ordered aggs.
Date: 2016-12-20 07:23:42
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix sharing Agg transition state of DISTINCT or ordered aggs.

If a query contained two aggregates that could share the transition value,
we would correctly collect the input into a tuplesort only once, but
incorrectly run the transition function over the accumulated input twice,
in finalize_aggregates(). That caused a crash, when we tried to call
tuplesort_performsort() on an already-freed NULL tuplestore.

Backport to 9.6, where sharing of transition state and this bug were
introduced.

Analysis by Tom Lane.

Discussion: https://www.postgresql.org/message-id/[email protected]

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/db80acfc9d50ac56811d22802ab3d822ab313055

Modified Files
--------------
src/backend/executor/nodeAgg.c | 21 ++++++++++++++++++---
src/test/regress/expected/aggregates.out | 9 +++++++++
src/test/regress/sql/aggregates.sql | 3 +++
3 files changed, 30 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2016-12-20 13:42:53 pgsql: Add pg_sequence system catalog
Previous Message Robert Haas 2016-12-20 03:56:20 pgsql: Invalid parent's relcache after CREATE TABLE .. PARTITION OF.