I noticed that commit 25fff40798fc4ac11a241bfd9ab0c45c085e2212 forgot
to teach SHOW ALL to show all GUCs when the user belongs to
pg_read_all_settings.
Patch attached; I think this should be backpatched.
Yours,
Laurenz Albe
From f3a92a6ecc8dc116a6843c1bd76aa5e2a97785ff Mon Sep 17 00:00:00 2001
From: Laurenz Albe <laurenz.a...@cybertec.at>
Date: Thu, 1 Mar 2018 16:18:04 +0100
Subject: [PATCH] Teach SHOW ALL to honor pg_read_all_settings membership
This was an oversight in commit 25fff40798fc4ac11a241bfd9ab0c45c085e2212.
---
src/backend/utils/misc/guc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 87ba67661a..a8c8330dde 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -8012,7 +8012,6 @@ ShowGUCConfigOption(const char *name, DestReceiver *dest)
static void
ShowAllGUCConfig(DestReceiver *dest)
{
- bool am_superuser = superuser();
int i;
TupOutputState *tstate;
TupleDesc tupdesc;
@@ -8037,7 +8036,8 @@ ShowAllGUCConfig(DestReceiver *dest)
char *setting;
if ((conf->flags & GUC_NO_SHOW_ALL) ||
- ((conf->flags & GUC_SUPERUSER_ONLY) && !am_superuser))
+ ((conf->flags & GUC_SUPERUSER_ONLY) &&
+ !is_member_of_role(GetUserId(), DEFAULT_ROLE_READ_ALL_SETTINGS)))
continue;
/* assign to the values array */
--
2.14.3