From 3dedeadb5ee285be393f479276a9039280eddcaa Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 30 Jun 2017 18:20:54 -0700 Subject: [PATCH] Fix memory leak in RemoteFinalizedShardPlacementList(). --- src/backend/distributed/commands/multi_copy.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index e2b2703e2..b590a70de 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -939,8 +939,8 @@ RemoteFinalizedShardPlacementList(uint64 shardId) for (rowIndex = 0; rowIndex < rowCount; rowIndex++) { char *placementIdString = PQgetvalue(queryResult, rowIndex, 0); - char *nodeName = PQgetvalue(queryResult, rowIndex, 1); - char *nodePortString = PQgetvalue(queryResult, rowIndex, 2); + char *nodeName = pstrdup(PQgetvalue(queryResult, rowIndex, 1)); + char *nodePortString = pstrdup(PQgetvalue(queryResult, rowIndex, 2)); uint32 nodePort = atoi(nodePortString); uint64 placementId = atoll(placementIdString); @@ -959,6 +959,7 @@ RemoteFinalizedShardPlacementList(uint64 shardId) ereport(ERROR, (errmsg("could not get shard placements from the master node"))); } + PQclear(queryResult); return finalizedPlacementList; }