From 138531f1bbc333745bd8422371c07e7e108d5528 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 13 Sep 2021 16:53:11 -0400 Subject: [PATCH] Clear conn->errorMessage at successful completion of PQconnectdb(). Commits ffa2e4670 and 52a10224e caused libpq's connection-establishment functions to usually leave a nonempty string in the connection's errorMessage buffer, even after a successful connection. While that was intentional on my part, more sober reflection says that it wasn't a great idea: the string would be a bit confusing. Also this broke at least one application that checked for connection success by examining the errorMessage, instead of using PQstatus() as documented. Let's clear the buffer at success exit, restoring the pre-v14 behavior. Discussion: https://postgr.es/m/4170264.1620321747@sss.pgh.pa.us --- src/interfaces/libpq/fe-connect.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 49eec3e835..b288d346f9 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -3654,6 +3654,13 @@ keep_going: /* We will come back to here until there is /* We can release the address list now. */ release_conn_addrinfo(conn); + /* + * Contents of conn->errorMessage are no longer interesting + * (and it seems some clients expect it to be empty after a + * successful connection). + */ + resetPQExpBuffer(&conn->errorMessage); + /* We are open for business! */ conn->status = CONNECTION_OK; return PGRES_POLLING_OK;