Refactor typcache.c's record typmod hash table.
authorAndres Freund <andres@anarazel.de>
Tue, 22 Aug 2017 23:05:48 +0000 (16:05 -0700)
committerAndres Freund <andres@anarazel.de>
Tue, 22 Aug 2017 23:11:54 +0000 (16:11 -0700)
commit35ea75632a56ca8ef22aa8fed03b9dabb9c8c575
tree630833921351b6f89f7be11372a2ac8bcba332a8
parent0052a0243d9c979a06ef273af965508103c456e0
Refactor typcache.c's record typmod hash table.

Previously, tuple descriptors were stored in chains keyed by a fixed size
array of OIDs.  That meant there were effectively two levels of collision
chain -- one inside and one outside the hash table.  Instead, let dynahash.c
look after conflicts for us by supplying a proper hash and equal function
pair.

This is a nice cleanup on its own, but also simplifies followup
changes allowing blessed TupleDescs to be shared between backends
participating in parallel query.

Author: Thomas Munro
Reviewed-By: Andres Freund
Discussion: https://postgr.es/m/CAEepm%3D34GVhOL%2BarUx56yx7OPk7%3DqpGsv3CpO54feqjAwQKm5g%40mail.gmail.com
src/backend/access/common/tupdesc.c
src/backend/utils/cache/typcache.c
src/include/access/tupdesc.h