diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index 0b6d6cc0d..a4ecb7a43 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -1026,8 +1026,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); @@ -1046,6 +1046,7 @@ RemoteFinalizedShardPlacementList(uint64 shardId) ereport(ERROR, (errmsg("could not get shard placements from the master node"))); } + PQclear(queryResult); return finalizedPlacementList; }