From bc617a7b1cada2ec5f8b9d45a4312e49fc1766ad Mon Sep 17 00:00:00 2001 From: Amit Kapila Date: Tue, 23 Feb 2021 09:11:22 +0530 Subject: [PATCH] Change the error message for logical replication authentication failure. The authentication failure error message wasn't distinguishing whether it is a physical replication or logical replication connection failure and was giving incomplete information on what led to failure in case of logical replication connection. Author: Paul Martinez and Amit Kapila Reviewed-by: Euler Taveira and Amit Kapila Discussion: https://postgr.es/m/CACqFVBYahrAi2OPdJfUA3YCvn3QMzzxZdw0ibSJ8wouWeDtiyQ@mail.gmail.com --- doc/src/sgml/client-auth.sgml | 6 ++++-- src/backend/libpq/auth.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index c4b9971a20..b420486a0a 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -229,8 +229,10 @@ hostnogssenc database userreplication specifies that the record - matches if a physical replication connection is requested (note that - replication connections do not specify any particular database). + matches if a physical replication connection is requested, however, it + doesn't match with logical replication connections. Note that physical + replication connections do not specify any particular database whereas + logical replication connections do specify it. Otherwise, this is the name of a specific PostgreSQL database. Multiple database names can be supplied by separating them with diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 545635f41a..baa0712c0f 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -417,7 +417,7 @@ ClientAuthentication(Port *port) #endif _("no encryption"); - if (am_walsender) + if (am_walsender && !am_db_walsender) ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), /* translator: last %s describes encryption state */ @@ -484,7 +484,7 @@ ClientAuthentication(Port *port) gai_strerror(port->remote_hostname_errcode)) : \ 0)) - if (am_walsender) + if (am_walsender && !am_db_walsender) ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), /* translator: last %s describes encryption state */