From: Rank, Christian (LfL) <Christian.Rank@lfl.bayern.de>
To: Laurenz Albe <laurenz.albe@cybertec.at>
To: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Cc: PostgreSQL TDBA (LDBV) <PostgreSQL_TDBA@ldbv.bayern.de>
Subject: AW: Commit 5a2fed911a broke parallel query
Date: Thu, 2 Jan 2025 09:33:36 +0000
Message-ID: <2fe29e302a9849d6a84f7a0ae0f54210@lfl.bayern.de> (raw)
In-Reply-To: <8befc845430ba1ae3748af900af298788e579c89.camel@cybertec.at>
References: <8befc845430ba1ae3748af900af298788e579c89.camel@cybertec.at>
Hello,
just a notice that this sounds like the symptom already described in
https://www.postgresql.org/message-id/c7896c19adb646e889d5b2e40fdd17c1@ldbv.bayern.de
Regards,
Christian
-----Ursprüngliche Nachricht-----
Von: Laurenz Albe <laurenz.albe@cybertec.at>
Gesendet: Montag, 23. Dezember 2024 11:55
An: pgsql-bugs@lists.postgresql.org
Betreff: Commit 5a2fed911a broke parallel query
This is a script to reproduce the problem:
CREATE ROLE fluff;
CREATE ROLE duff LOGIN IN ROLE fluff;
CREATE DATABASE scratch OWNER duff;
REVOKE CONNECT, TEMP ON DATABASE scratch FROM PUBLIC;
\c scratch duff
CREATE TABLE large AS SELECT id FROM generate_series(1, 500000) AS id;
GRANT SELECT ON large TO fluff;
SET ROLE fluff;
SELECT count(*) FROM large;
Since commit 5a2fed911a, this results in:
ERROR: permission denied for database "scratch"
DETAIL: User does not have CONNECT privilege.
CONTEXT: parallel worker
The following patch makes the problem disappear, but I am far
from certain that using the session user is always correct there:
inline patch 1: src/backend/utils/init/postinit.c (+1/-1 lines) download inline-1.patchdiff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.cindex a024b1151d0..150ec3f52f8 100644--- a/src/backend/utils/init/postinit.c+++ b/src/backend/utils/init/postinit.c@@ -360,7 +360,7 @@ CheckMyDatabase(const char *name, bool am_superuser, bool override_allow_connect
* and save a few cycles.)
*/
if (!am_superuser &&
- object_aclcheck(DatabaseRelationId, MyDatabaseId, GetUserId(),+ object_aclcheck(DatabaseRelationId, MyDatabaseId, GetSessionUserId(),
ACL_CONNECT) != ACLCHECK_OK)
ereport(FATAL,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
Yours,
Laurenz Albe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: Christian.Rank@lfl.bayern.de, laurenz.albe@cybertec.at, pgsql-bugs@lists.postgresql.org, PostgreSQL_TDBA@ldbv.bayern.de
Subject: Re: AW: Commit 5a2fed911a broke parallel query
In-Reply-To: <2fe29e302a9849d6a84f7a0ae0f54210@lfl.bayern.de>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox