agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH 2/2] REPACK: do not require LOGIN privileges 266+ messages / 2 participants [nested] [flat]
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges @ 2026-04-20 11:19 Álvaro Herrera <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw) Normally, starting a background worker does require LOGIN, which is fine. However, the bgworker used for REPACK has no business requiring it. It's just user-unfriendly and prevents repacking tables comfortably. --- src/backend/commands/repack_worker.c | 5 +++-- src/test/regress/expected/cluster.out | 2 +- src/test/regress/sql/cluster.sql | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c index e4a4860805b..c40f8c98e06 100644 --- a/src/backend/commands/repack_worker.c +++ b/src/backend/commands/repack_worker.c @@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg) pq_set_parallel_leader(shared->backend_pid, shared->backend_proc_number); - /* Connect to the database. */ - BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0); + /* Connect to the database. LOGIN is not required. */ + BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, + BGWORKER_BYPASS_ROLELOGINCHECK); /* * Transaction is needed to open relation, and it also provides us with a diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index e17bc91fae1..71270134985 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -546,7 +546,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 1f471a8821a..6746236ffec 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -257,7 +257,7 @@ DROP TABLE clstrpart; CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i); CREATE INDEX ptnowner_i_idx ON ptnowner(i); CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1); -CREATE ROLE regress_ptnowner LOGIN; +CREATE ROLE regress_ptnowner; CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2); ALTER TABLE ptnowner1 OWNER TO regress_ptnowner; SET SESSION AUTHORIZATION regress_ptnowner; -- 2.47.3 --m6zy3l65ushq557m-- ^ permalink raw reply [nested|flat] 266+ messages in thread
* [PATCH v2 1/4] WIP: Use permanent FunctionCallInfo in printtup @ 2026-05-06 15:41 Andres Freund <[email protected]> 0 siblings, 0 replies; 266+ messages in thread From: Andres Freund @ 2026-05-06 15:41 UTC (permalink / raw) Should probably be done similarly for COPY --- src/backend/access/common/printtup.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index 616bdafd395..6fa93a6798a 100644 --- a/src/backend/access/common/printtup.c +++ b/src/backend/access/common/printtup.c @@ -50,6 +50,8 @@ typedef struct bool typisvarlena; /* is it varlena (ie possibly toastable)? */ int16 format; /* format code for this column */ FmgrInfo finfo; /* Precomputed call info for output fn */ + /* XXX: Would probably be faster to allocate "inline" */ + FunctionCallInfo outstate; /* Prepared FCI for slightly faster calls */ } PrinttupAttrInfo; typedef struct @@ -291,6 +293,10 @@ printtup_prepare_info(DR_printtup *myState, TupleDesc typeinfo, int numAttrs) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("unsupported format code: %d", format))); + + /* both out and send funcs have one argument */ + thisState->outstate = palloc0(SizeForFunctionCallInfo(1)); + thisState->outstate->flinfo = &thisState->finfo; } } @@ -353,12 +359,16 @@ printtup(TupleTableSlot *slot, DestReceiver *self) VALGRIND_CHECK_MEM_IS_DEFINED(DatumGetPointer(attr), VARSIZE_ANY(DatumGetPointer(attr))); + /* fill in argument for output / send function */ + thisState->outstate->args[0].value = attr; + if (thisState->format == 0) { /* Text output */ char *outputstr; - outputstr = OutputFunctionCall(&thisState->finfo, attr); + outputstr = DatumGetCString(FunctionCallInvoke(thisState->outstate)); + Assert(!thisState->outstate->isnull); pq_sendcountedtext(buf, outputstr, strlen(outputstr)); } else @@ -366,7 +376,8 @@ printtup(TupleTableSlot *slot, DestReceiver *self) /* Binary output */ bytea *outputbytes; - outputbytes = SendFunctionCall(&thisState->finfo, attr); + outputbytes = DatumGetByteaP(FunctionCallInvoke(thisState->outstate)); + Assert(!thisState->outstate->isnull); pq_sendint32(buf, VARSIZE(outputbytes) - VARHDRSZ); pq_sendbytes(buf, VARDATA(outputbytes), VARSIZE(outputbytes) - VARHDRSZ); -- 2.43.0 --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=v2-0002-Mega-WIP-Optimized-out-send-path-for-printtup.patch ^ permalink raw reply [nested|flat] 266+ messages in thread
end of thread, other threads:[~2026-05-06 15:41 UTC | newest] Thread overview: 266+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]> 2026-05-06 15:41 [PATCH v2 1/4] WIP: Use permanent FunctionCallInfo in printtup Andres Freund <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox