From 1a56b99f132a2469ff6fb509a49f1847d827d9f4 Mon Sep 17 00:00:00 2001 From: Burak Yucesoy Date: Mon, 17 Apr 2017 19:28:19 +0300 Subject: [PATCH] Fix node copy error Instead of directly returning heap tuple obtained from heap scan we return copied version of it. --- src/backend/distributed/utils/node_metadata.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/utils/node_metadata.c b/src/backend/distributed/utils/node_metadata.c index 28c4c88f7..aa16e1502 100644 --- a/src/backend/distributed/utils/node_metadata.c +++ b/src/backend/distributed/utils/node_metadata.c @@ -639,6 +639,7 @@ GetNodeTuple(char *nodeName, int32 nodePort) ScanKeyData scanKey[scanKeyCount]; SysScanDesc scanDescriptor = NULL; HeapTuple heapTuple = NULL; + HeapTuple nodeTuple = NULL; ScanKeyInit(&scanKey[0], Anum_pg_dist_node_nodename, BTEqualStrategyNumber, F_TEXTEQ, CStringGetTextDatum(nodeName)); @@ -654,10 +655,12 @@ GetNodeTuple(char *nodeName, int32 nodePort) nodeName, nodePort))); } + nodeTuple = heap_copytuple(heapTuple); + systable_endscan(scanDescriptor); heap_close(pgDistNode, AccessShareLock); - return heapTuple; + return nodeTuple; }