From 889225cdc868139f5cf889497964b1a1ae0d5681 Mon Sep 17 00:00:00 2001
From: Bharath Rupireddy <bharath.rupireddy@enterprisedb.com>
Date: Fri, 26 Jun 2020 15:06:24 +0530
Subject: [PATCH v1] Remove Extra palloc Of raw_buf For Binary Format In COPY
 FROM

For binary files raw_buf is not used, instead, attribute_buf
is used in CopyReadBinaryAttribute. Hence, don't palloc raw_buf.
---
 src/backend/commands/copy.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 6b1fd6d4cc..0cdac16eac 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -3367,7 +3367,15 @@ BeginCopyFrom(ParseState *pstate,
 	initStringInfo(&cstate->attribute_buf);
 	initStringInfo(&cstate->line_buf);
 	cstate->line_buf_converted = false;
-	cstate->raw_buf = (char *) palloc(RAW_BUF_SIZE + 1);
+
+	/* For binary files raw_buf is not used,
+	 * instead, attribute_buf is used in
+	 * CopyReadBinaryAttribute. Hence, don't palloc
+	 * raw_buf.
+	 */
+	if (!cstate->binary)
+		cstate->raw_buf = (char *) palloc(RAW_BUF_SIZE + 1);
+
 	cstate->raw_buf_index = cstate->raw_buf_len = 0;
 
 	/* Assign range table, we'll need it in CopyFrom. */
-- 
2.25.1

