From b30fae3467a652c5605cb2c42829f989d123f53a Mon Sep 17 00:00:00 2001
From: Andrey Lepikhov <a.lepikhov@postgrespro.ru>
Date: Fri, 15 Oct 2021 11:12:46 +0500
Subject: [PATCH] Bugfix. Update a backend status userid field after changing
 of session authorization.

---
 src/backend/utils/init/miscinit.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 88801374b5..ffcda2f05c 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -828,6 +828,8 @@ InitializeSessionUserIdStandalone(void)
 void
 SetSessionAuthorization(Oid userid, bool is_superuser)
 {
+	volatile PgBackendStatus *beentry = MyBEEntry;
+
 	/* Must have authenticated already, else can't make permission check */
 	AssertState(OidIsValid(AuthenticatedUserId));
 
@@ -839,6 +841,9 @@ SetSessionAuthorization(Oid userid, bool is_superuser)
 
 	SetSessionUserId(userid, is_superuser);
 
+	/* Report changes in the PgBackendStatus array. */
+	beentry->st_userid = userid;
+
 	SetConfigOption("is_superuser",
 					is_superuser ? "on" : "off",
 					PGC_INTERNAL, PGC_S_OVERRIDE);
-- 
2.25.1

