From 6c73576606cfff1d0448251a3abc5576b5ff2cf6 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 15 Aug 2022 16:10:24 +0200 Subject: [PATCH] Fix HTAB memory leaks --- src/backend/distributed/commands/alter_table.c | 3 ++- src/backend/distributed/metadata/dependency.c | 3 ++- src/backend/distributed/operations/shard_rebalancer.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/backend/distributed/commands/alter_table.c b/src/backend/distributed/commands/alter_table.c index 4aa6855cd..363bb2f01 100644 --- a/src/backend/distributed/commands/alter_table.c +++ b/src/backend/distributed/commands/alter_table.c @@ -1281,7 +1281,8 @@ ErrorIfUnsupportedCascadeObjects(Oid relationId) info.keysize = sizeof(Oid); info.entrysize = sizeof(Oid); info.hash = oid_hash; - uint32 hashFlags = (HASH_ELEM | HASH_FUNCTION); + info.hcxt = CurrentMemoryContext; + uint32 hashFlags = (HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); HTAB *nodeMap = hash_create("object dependency map (oid)", 64, &info, hashFlags); bool unsupportedObjectInDepGraph = diff --git a/src/backend/distributed/metadata/dependency.c b/src/backend/distributed/metadata/dependency.c index 9f14b9564..424532d8d 100644 --- a/src/backend/distributed/metadata/dependency.c +++ b/src/backend/distributed/metadata/dependency.c @@ -2099,7 +2099,8 @@ GetDependingViews(Oid relationId) info.keysize = sizeof(Oid); info.entrysize = sizeof(ViewDependencyNode); info.hash = oid_hash; - uint32 hashFlags = (HASH_ELEM | HASH_FUNCTION); + info.hcxt = CurrentMemoryContext; + uint32 hashFlags = (HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); HTAB *nodeMap = hash_create("view dependency map (oid)", 32, &info, hashFlags); ViewDependencyNode *tableNode = BuildViewDependencyGraph(relationId, nodeMap); diff --git a/src/backend/distributed/operations/shard_rebalancer.c b/src/backend/distributed/operations/shard_rebalancer.c index b7cb900e3..043dd03cb 100644 --- a/src/backend/distributed/operations/shard_rebalancer.c +++ b/src/backend/distributed/operations/shard_rebalancer.c @@ -2634,7 +2634,8 @@ ShardPlacementsListToHash(List *shardPlacementList) info.entrysize = sizeof(ShardPlacement); info.hash = PlacementsHashHashCode; info.match = PlacementsHashCompare; - int hashFlags = (HASH_ELEM | HASH_FUNCTION | HASH_COMPARE); + info.hcxt = CurrentMemoryContext; + int hashFlags = (HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT); HTAB *shardPlacementsHash = hash_create("ActivePlacements Hash", shardPlacementCount, &info, hashFlags);