From 26f569abd8a50fad3364cbf0ebcbe2dd8aa706ff Mon Sep 17 00:00:00 2001 From: Onder Kalaci Date: Wed, 27 Feb 2019 18:35:44 +0300 Subject: [PATCH] Make sure to clear PGresult on few places This leads to a memory leak otherwise. --- src/backend/distributed/master/master_metadata_utility.c | 1 + src/backend/distributed/test/run_from_same_connection.c | 6 +++++- src/backend/distributed/worker/worker_data_fetch_protocol.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/master/master_metadata_utility.c b/src/backend/distributed/master/master_metadata_utility.c index f9223cf35..9e1296831 100644 --- a/src/backend/distributed/master/master_metadata_utility.c +++ b/src/backend/distributed/master/master_metadata_utility.c @@ -237,6 +237,7 @@ DistributedTableSizeOnWorker(WorkerNode *workerNode, Oid relationId, char *sizeQ tableSizeString = tableSizeStringInfo->data; tableSize = atol(tableSizeString); + PQclear(result); ClearResults(connection, raiseErrors); return tableSize; diff --git a/src/backend/distributed/test/run_from_same_connection.c b/src/backend/distributed/test/run_from_same_connection.c index 17ce54270..508fc133a 100644 --- a/src/backend/distributed/test/run_from_same_connection.c +++ b/src/backend/distributed/test/run_from_same_connection.c @@ -196,6 +196,7 @@ GetRemoteProcessId(MultiConnection *connection) StringInfo queryStringInfo = makeStringInfo(); PGresult *result = NULL; int64 rowCount = 0; + int64 resultValue = 0; appendStringInfo(queryStringInfo, GET_PROCESS_ID); @@ -208,7 +209,10 @@ GetRemoteProcessId(MultiConnection *connection) PG_RETURN_VOID(); } + resultValue = ParseIntField(result, 0, 0); + + PQclear(result); ClearResults(connection, false); - return ParseIntField(result, 0, 0); + return resultValue; } diff --git a/src/backend/distributed/worker/worker_data_fetch_protocol.c b/src/backend/distributed/worker/worker_data_fetch_protocol.c index bd0b38447..82c50a27c 100644 --- a/src/backend/distributed/worker/worker_data_fetch_protocol.c +++ b/src/backend/distributed/worker/worker_data_fetch_protocol.c @@ -563,6 +563,7 @@ TableDDLCommandList(const char *nodeName, uint32 nodePort, const char *tableName ExecuteOptionalRemoteCommand(connection, queryString->data, &result); ddlCommandList = ReadFirstColumnAsText(result); + PQclear(result); ForgetResults(connection); CloseConnection(connection);