From ef49b75cd6a98353e7f6492103eb64b8352e1eb7 Mon Sep 17 00:00:00 2001 From: Onur Tirtir Date: Thu, 22 Oct 2020 13:17:13 +0300 Subject: [PATCH] Fix memory issues around deparsing index commands (#4270) --- .../distributed/deparser/citus_ruleutils.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/backend/distributed/deparser/citus_ruleutils.c b/src/backend/distributed/deparser/citus_ruleutils.c index 1e3884bd2..63d320f16 100644 --- a/src/backend/distributed/deparser/citus_ruleutils.c +++ b/src/backend/distributed/deparser/citus_ruleutils.c @@ -684,12 +684,13 @@ deparse_shard_index_statement(IndexStmt *origStmt, Oid distrelid, int64 shardid, StringInfo buffer) { IndexStmt *indexStmt = copyObject(origStmt); /* copy to avoid modifications */ - char *relationName = indexStmt->relation->relname; - char *indexName = indexStmt->idxname; /* extend relation and index name using shard identifier */ - AppendShardIdToName(&relationName, shardid); - AppendShardIdToName(&indexName, shardid); + AppendShardIdToName(&(indexStmt->relation->relname), shardid); + AppendShardIdToName(&(indexStmt->idxname), shardid); + + char *relationName = indexStmt->relation->relname; + char *indexName = indexStmt->idxname; /* use extended shard name and transformed stmt for deparsing */ List *deparseContext = deparse_context_for(relationName, distrelid); @@ -749,10 +750,10 @@ deparse_shard_reindex_statement(ReindexStmt *origStmt, Oid distrelid, int64 shar if (reindexStmt->kind == REINDEX_OBJECT_INDEX || reindexStmt->kind == REINDEX_OBJECT_TABLE) { - relationName = reindexStmt->relation->relname; - /* extend relation and index name using shard identifier */ - AppendShardIdToName(&relationName, shardid); + AppendShardIdToName(&(reindexStmt->relation->relname), shardid); + + relationName = reindexStmt->relation->relname; } appendStringInfoString(buffer, "REINDEX ");