From 9a946298338e4783fcc98e0896712fdf2b2bfd56 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Thu, 4 Dec 2014 19:47:06 -0500
Subject: [PATCH] Don't dump core if pq_comm_reset() is called before
 pq_init().
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This can happen if an error occurs in a standalone backend.  This bug
was introduced by commit 2bd9e412f92bc6a68f3e8bcb18e04955cc35001d.

Reported by Álvaro Herrera.
---
 src/backend/libpq/pqcomm.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 74161970ab5..a4abf3ab832 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -105,9 +105,6 @@ char	   *Unix_socket_group;
 /* Where the Unix socket files are (list of palloc'd strings) */
 static List *sock_paths = NIL;
 
-PQcommMethods *PqCommMethods;
-
-
 /*
  * Buffers for low-level I/O.
  *
@@ -154,8 +151,6 @@ static int	Lock_AF_UNIX(char *unixSocketDir, char *unixSocketPath);
 static int	Setup_AF_UNIX(char *sock_path);
 #endif   /* HAVE_UNIX_SOCKETS */
 
-PQcommMethods PQcommSocketMethods;
-
 static PQcommMethods PqCommSocketMethods = {
 	socket_comm_reset,
 	socket_flush,
@@ -167,6 +162,9 @@ static PQcommMethods PqCommSocketMethods = {
 	socket_endcopyout
 };
 
+PQcommMethods *PqCommMethods = &PqCommSocketMethods;
+
+
 
 /* --------------------------------
  *		pq_init - initialize libpq at backend startup
@@ -175,7 +173,6 @@ static PQcommMethods PqCommSocketMethods = {
 void
 pq_init(void)
 {
-	PqCommMethods = &PqCommSocketMethods;
 	PqSendBufferSize = PQ_SEND_BUFFER_SIZE;
 	PqSendBuffer = MemoryContextAlloc(TopMemoryContext, PqSendBufferSize);
 	PqSendPointer = PqSendStart = PqRecvPointer = PqRecvLength = 0;
-- 
GitLab