Commit 9b2fd490 authored by Peter Eisentraut's avatar Peter Eisentraut

Fix hash_array

Commit 054adca6 neglected to
initialize the type_id field of the synthesized type cache entry, so
it would make a new one on every call.

Also, better use the per-function memory context for this; otherwise
it leaks memory.

Discussion: https://www.postgresql.org/message-id/flat/17158-8a2ba823982537a4%40postgresql.org
parent 6e6adbdd
......@@ -3992,13 +3992,14 @@ hash_array(PG_FUNCTION_ARGS)
MemoryContext oldcontext;
TypeCacheEntry *record_typentry;
oldcontext = MemoryContextSwitchTo(CacheMemoryContext);
oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt);
/*
* Make fake type cache entry structure. Note that we can't just
* modify typentry, since that points directly into the type cache.
*/
record_typentry = palloc(sizeof(*record_typentry));
record_typentry = palloc0(sizeof(*record_typentry));
record_typentry->type_id = element_type;
/* fill in what we need below */
record_typentry->typlen = typentry->typlen;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment