From b3684074f39604206b02caf85f69fa9039bb9902 Mon Sep 17 00:00:00 2001 From: Jason Petersen Date: Fri, 2 Sep 2016 16:22:32 -0400 Subject: [PATCH] Fix CreateShardConnectionHash memory leak The call to hash_create specified HASH_CONTEXT without actually setting one using the provided HASHCTL. The hashes returned by this function are used locally, so simply using CurrentMemoryContext is sufficient. --- src/backend/distributed/transaction/multi_shard_transaction.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/distributed/transaction/multi_shard_transaction.c b/src/backend/distributed/transaction/multi_shard_transaction.c index 57a22adfe..272e4bf31 100644 --- a/src/backend/distributed/transaction/multi_shard_transaction.c +++ b/src/backend/distributed/transaction/multi_shard_transaction.c @@ -18,6 +18,7 @@ #include "distributed/master_metadata_utility.h" #include "distributed/multi_shard_transaction.h" #include "nodes/pg_list.h" +#include "utils/memutils.h" #define INITIAL_CONNECTION_CACHE_SIZE 1001 @@ -92,6 +93,7 @@ CreateShardConnectionHash(void) info.keysize = sizeof(int64); info.entrysize = sizeof(ShardConnections); info.hash = tag_hash; + info.hcxt = TopTransactionContext; hashFlags = HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT; shardConnectionsHash = hash_create("Shard Connections Hash",