pgsql: Fix SHOW ALL command for non-superusers with replication connect

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix SHOW ALL command for non-superusers with replication connect
Date: 2019-04-15 03:35:56
Message-ID: E1hFsPU-0005ul-LE@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix SHOW ALL command for non-superusers with replication connection

Since Postgres 10, SHOW commands can be triggered with replication
connections in a WAL sender context, however it missed that a
transaction context is needed for syscache lookups. This commit makes
sure that the syscache lookups can happen correctly by setting a
transaction context when running SHOW commands in a WAL sender.

Superuser-only parameters can be displayed using SHOW commands not only
to superusers, but also to members of system role pg_read_all_settings,
which requires a syscache lookup to check if the connected role is a
member of this system role or not, or the instance crashes. Superusers
do not need to check the syscache so it worked correctly in this case.

New tests are added to cover this issue.

Reported-by: Alexander Kukushkin
Author: Michael Paquier
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/15734-2daa8761eeed8e20@postgresql.org
Backpatch-through: 10

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/ab359624b4c102e308a86959ad74d34d52746db2

Modified Files
--------------
src/backend/replication/walsender.c | 3 ++
src/test/perl/PostgresNode.pm | 3 +-
src/test/recovery/t/001_stream_rep.pl | 56 +++++++++++++++++++++++++++++++++--
3 files changed, 59 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2019-04-15 07:35:04 pgsql: Unbreak index optimization for LIKE on bytea
Previous Message Noah Misch 2019-04-15 03:14:16 pgsql: Test both 0.0.0.0 and 127.0.0.x addresses to find a usable port.