]> granicus.if.org Git - postgresql/commit
Fix array size allocation for HashAggregate hash keys.
authorAndrew Gierth <rhodiumtoad@postgresql.org>
Thu, 23 May 2019 14:26:01 +0000 (15:26 +0100)
committerAndrew Gierth <rhodiumtoad@postgresql.org>
Thu, 23 May 2019 14:26:01 +0000 (15:26 +0100)
commit44e95b5728a4569c494fa4ea4317f8a2f50a206b
tree3b5097bdb9274baae68c998b111a3314e6415f3e
parent156c0c2dff403fd115f3a5f6d73ab80959c84129
Fix array size allocation for HashAggregate hash keys.

When there were duplicate columns in the hash key list, the array
sizes could be miscomputed, resulting in access off the end of the
array. Adjust the computation to ensure the array is always large
enough.

(I considered whether the duplicates could be removed in planning, but
I can't rule out the possibility that duplicate columns might have
different hash functions assigned. Simpler to just make sure it works
at execution time regardless.)

Bug apparently introduced in fc4b3dea2 as part of narrowing down the
tuples stored in the hashtable. Reported by Colm McHugh of Salesforce,
though I didn't use their patch. Backpatch back to version 10 where
the bug was introduced.

Discussion: https://postgr.es/m/CAFeeJoKKu0u+A_A9R9316djW-YW3-+Gtgvy3ju655qRHR3jtdA@mail.gmail.com
src/backend/executor/nodeAgg.c
src/test/regress/expected/aggregates.out
src/test/regress/sql/aggregates.sql