agora inbox for [email protected]
help / color / mirror / Atom feed[Fwd: Re: regression failures on WIndows in machines with some non-English locales]
969+ messages / 3 participants
[nested] [flat]
* [Fwd: Re: regression failures on WIndows in machines with some non-English locales]
@ 2005-11-01 12:43 Andrew Dunstan <[email protected]>
2005-11-01 13:41 ` Re: [Fwd: Re: regression failures on WIndows in machines with some non-English locales] Tom Lane <[email protected]>
0 siblings, 1 reply; 969+ messages in thread
From: Andrew Dunstan @ 2005-11-01 12:43 UTC (permalink / raw)
To: pgsql-hackers; +Cc: Petr Jelinek <[email protected]>
This has refreshed my fading memory. The patch seems like the best
solution. Is there any objection to applying it?
(Petr, I assume you intended to send this to a mailing list also)
cheers
andrew
-------- Original Message --------
Subject: Re: regression failures on WIndows in machines with some
non-English locales
Date: Tue, 01 Nov 2005 07:55:59 +0100
From: Petr Jelinek <[email protected]>
To: Tom Lane <[email protected]>, Andrew Dunstan <[email protected]>
References: <[email protected]> <[email protected]>
BTW Tom you should know it's not really failure it's just different
sorting of output in rules test (due to "ch" being one letter in my locale).
When I suggested --no-locale for regression test I ment something like
whats in attachement - this will not change current functionality just
adds option to set NO_LOCALE=something in make check commandline which
would enable me to setup buildfarm member (after patching buildfarm
client, I think it should be option which is off by default there too).
I want this aproach because forcing --no-locale for everybody could mean
that we won't find some errors - good example of this is "force C
locale for temp regression installations" thread
(http://archives.postgresql.org/pgsql-patches/2005-08/msg00352.php)
where we discussed it, you both might remmeber it.
--
Regards
Petr Jelinek (PJMODOS)
Index: GNUmakefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/GNUmakefile,v
retrieving revision 1.52
diff -c -r1.52 GNUmakefile
*** GNUmakefile 28 Jul 2005 04:32:32 -0000 1.52
--- GNUmakefile 1 Nov 2005 06:34:49 -0000
***************
*** 28,33 ****
--- 28,38 ----
MAXCONNOPT += --max-connections=$(MAX_CONNECTIONS)
endif
+ # locale
+ NOLOCALE :=
+ ifdef NO_LOCALE
+ NOLOCALE += --no-locale
+ endif
##
## Prepare for tests
***************
*** 132,148 ****
check: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)
installcheck: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql
installcheck-parallel: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)
# old interfaces follow...
--- 137,153 ----
check: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
installcheck: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
installcheck-parallel: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
# old interfaces follow...
***************
*** 152,161 ****
runtest-parallel: installcheck-parallel
bigtest:
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big
bigcheck:
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big
##
--- 157,166 ----
runtest-parallel: installcheck-parallel
bigtest:
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big $(NOLOCALE)
bigcheck:
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big $(NOLOCALE)
##
Index: pg_regress.sh
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/pg_regress.sh,v
retrieving revision 1.60
diff -c -r1.60 pg_regress.sh
*** pg_regress.sh 5 Sep 2005 23:50:49 -0000 1.60
--- pg_regress.sh 1 Nov 2005 06:34:51 -0000
***************
*** 24,29 ****
--- 24,30 ----
--schedule=FILE use test ordering schedule from FILE
(may be used multiple times to concatenate)
--temp-install[=DIR] create a temporary installation (in DIR)
+ --no-locale use C locale
Options for \`temp-install' mode:
--top-builddir=DIR (relative) path to top level build directory
***************
*** 99,104 ****
--- 100,106 ----
unset mode
unset schedule
unset debug
+ unset nolocale
unset top_builddir
unset temp_install
unset multibyte
***************
*** 142,147 ****
--- 144,152 ----
--multibyte=*)
multibyte=`expr "x$1" : "x--multibyte=\(.*\)"`
shift;;
+ --no-locale)
+ nolocale=yes
+ shift;;
--temp-install)
temp_install=./tmp_check
shift;;
***************
*** 403,409 ****
fi
message "initializing database system"
! [ "$debug" = yes ] && initdb_options='--debug'
"$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
if [ $? -ne 0 ]
--- 408,415 ----
fi
message "initializing database system"
! [ "$debug" = yes ] && initdb_options="--debug"
! [ "$nolocale" = yes ] && initdb_options="$initdb_options --no-locale"
"$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
if [ $? -ne 0 ]
Attachments:
[text/plain] regress-nolocale.diff (4.6K, ../../[email protected]/2-regress-nolocale.diff)
download | inline diff:
Index: GNUmakefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/GNUmakefile,v
retrieving revision 1.52
diff -c -r1.52 GNUmakefile
*** GNUmakefile 28 Jul 2005 04:32:32 -0000 1.52
--- GNUmakefile 1 Nov 2005 06:34:49 -0000
***************
*** 28,33 ****
--- 28,38 ----
MAXCONNOPT += --max-connections=$(MAX_CONNECTIONS)
endif
+ # locale
+ NOLOCALE :=
+ ifdef NO_LOCALE
+ NOLOCALE += --no-locale
+ endif
##
## Prepare for tests
***************
*** 132,148 ****
check: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)
installcheck: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql
installcheck-parallel: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT)
# old interfaces follow...
--- 137,153 ----
check: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
installcheck: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(NOLOCALE)
installcheck-parallel: all
-rm -rf ./testtablespace
mkdir ./testtablespace
! $(SHELL) ./pg_regress --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) $(NOLOCALE)
# old interfaces follow...
***************
*** 152,161 ****
runtest-parallel: installcheck-parallel
bigtest:
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big
bigcheck:
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big
##
--- 157,166 ----
runtest-parallel: installcheck-parallel
bigtest:
! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big $(NOLOCALE)
bigcheck:
! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big $(NOLOCALE)
##
Index: pg_regress.sh
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/pg_regress.sh,v
retrieving revision 1.60
diff -c -r1.60 pg_regress.sh
*** pg_regress.sh 5 Sep 2005 23:50:49 -0000 1.60
--- pg_regress.sh 1 Nov 2005 06:34:51 -0000
***************
*** 24,29 ****
--- 24,30 ----
--schedule=FILE use test ordering schedule from FILE
(may be used multiple times to concatenate)
--temp-install[=DIR] create a temporary installation (in DIR)
+ --no-locale use C locale
Options for \`temp-install' mode:
--top-builddir=DIR (relative) path to top level build directory
***************
*** 99,104 ****
--- 100,106 ----
unset mode
unset schedule
unset debug
+ unset nolocale
unset top_builddir
unset temp_install
unset multibyte
***************
*** 142,147 ****
--- 144,152 ----
--multibyte=*)
multibyte=`expr "x$1" : "x--multibyte=\(.*\)"`
shift;;
+ --no-locale)
+ nolocale=yes
+ shift;;
--temp-install)
temp_install=./tmp_check
shift;;
***************
*** 403,409 ****
fi
message "initializing database system"
! [ "$debug" = yes ] && initdb_options='--debug'
"$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
if [ $? -ne 0 ]
--- 408,415 ----
fi
message "initializing database system"
! [ "$debug" = yes ] && initdb_options="--debug"
! [ "$nolocale" = yes ] && initdb_options="$initdb_options --no-locale"
"$bindir/initdb" -D "$PGDATA" -L "$datadir" --noclean $initdb_options >"$LOGDIR/initdb.log" 2>&1
if [ $? -ne 0 ]
^ permalink raw reply [nested|flat] 969+ messages in thread
* Re: [Fwd: Re: regression failures on WIndows in machines with some non-English locales]
2005-11-01 12:43 [Fwd: Re: regression failures on WIndows in machines with some non-English locales] Andrew Dunstan <[email protected]>
@ 2005-11-01 13:41 ` Tom Lane <[email protected]>
2005-11-01 15:36 ` Re: [Fwd: Re: regression failures on WIndows in machines Andrew Dunstan <[email protected]>
0 siblings, 1 reply; 969+ messages in thread
From: Tom Lane @ 2005-11-01 13:41 UTC (permalink / raw)
To: Andrew Dunstan <[email protected]>; +Cc: pgsql-hackers; Petr Jelinek <[email protected]>
Andrew Dunstan <[email protected]> writes:
> This has refreshed my fading memory. The patch seems like the best
> solution. Is there any objection to applying it?
Putting the switch at the end seems certain to fail on some platforms
(some versions of getopt are fussier than others).
> bigtest:
> ! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big $(NOLOCALE)
> bigcheck:
> ! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big $(NOLOCALE)
Put it with the other switches, and I won't object.
regards, tom lane
^ permalink raw reply [nested|flat] 969+ messages in thread
* Re: [Fwd: Re: regression failures on WIndows in machines
2005-11-01 12:43 [Fwd: Re: regression failures on WIndows in machines with some non-English locales] Andrew Dunstan <[email protected]>
2005-11-01 13:41 ` Re: [Fwd: Re: regression failures on WIndows in machines with some non-English locales] Tom Lane <[email protected]>
@ 2005-11-01 15:36 ` Andrew Dunstan <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Andrew Dunstan @ 2005-11-01 15:36 UTC (permalink / raw)
To: Tom Lane <[email protected]>; +Cc: pgsql-hackers; Petr Jelinek <[email protected]>
Tom Lane wrote:
>
>
>
>> bigtest:
>>! $(SHELL) ./pg_regress --schedule=$(srcdir)/serial_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql numeric_big $(NOLOCALE)
>>
>>
>
>
>
>> bigcheck:
>>! $(SHELL) ./pg_regress --temp-install --top-builddir=$(top_builddir) --temp-port=$(TEMP_PORT) --schedule=$(srcdir)/parallel_schedule --multibyte=$(MULTIBYTE) --load-language=plpgsql $(MAXCONNOPT) numeric_big $(NOLOCALE)
>>
>>
>
>Put it with the other switches, and I won't object.
>
>
>
>
applied with this fixed to 8.0 and HEAD.
cheers
andrew
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
* [PATCH 2/2] REPACK: do not require LOGIN privileges
@ 2026-04-20 11:19 Álvaro Herrera <[email protected]>
0 siblings, 0 replies; 969+ messages in thread
From: Álvaro Herrera @ 2026-04-20 11:19 UTC (permalink / raw)
Normally, starting a background worker does require LOGIN, which is
fine. However, the bgworker used for REPACK has no business requiring
it. It's just user-unfriendly and prevents repacking tables
comfortably.
---
src/backend/commands/repack_worker.c | 5 +++--
src/test/regress/expected/cluster.out | 2 +-
src/test/regress/sql/cluster.sql | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/backend/commands/repack_worker.c b/src/backend/commands/repack_worker.c
index e4a4860805b..c40f8c98e06 100644
--- a/src/backend/commands/repack_worker.c
+++ b/src/backend/commands/repack_worker.c
@@ -106,8 +106,9 @@ RepackWorkerMain(Datum main_arg)
pq_set_parallel_leader(shared->backend_pid,
shared->backend_proc_number);
- /* Connect to the database. */
- BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid, 0);
+ /* Connect to the database. LOGIN is not required. */
+ BackgroundWorkerInitializeConnectionByOid(shared->dbid, shared->roleid,
+ BGWORKER_BYPASS_ROLELOGINCHECK);
/*
* Transaction is needed to open relation, and it also provides us with a
diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out
index e17bc91fae1..71270134985 100644
--- a/src/test/regress/expected/cluster.out
+++ b/src/test/regress/expected/cluster.out
@@ -546,7 +546,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql
index 1f471a8821a..6746236ffec 100644
--- a/src/test/regress/sql/cluster.sql
+++ b/src/test/regress/sql/cluster.sql
@@ -257,7 +257,7 @@ DROP TABLE clstrpart;
CREATE TABLE ptnowner(i int unique not null) PARTITION BY LIST (i);
CREATE INDEX ptnowner_i_idx ON ptnowner(i);
CREATE TABLE ptnowner1 PARTITION OF ptnowner FOR VALUES IN (1);
-CREATE ROLE regress_ptnowner LOGIN;
+CREATE ROLE regress_ptnowner;
CREATE TABLE ptnowner2 PARTITION OF ptnowner FOR VALUES IN (2);
ALTER TABLE ptnowner1 OWNER TO regress_ptnowner;
SET SESSION AUTHORIZATION regress_ptnowner;
--
2.47.3
--m6zy3l65ushq557m--
^ permalink raw reply [nested|flat] 969+ messages in thread
end of thread, other threads:[~2026-04-20 11:19 UTC | newest]
Thread overview: 969+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2005-11-01 12:43 [Fwd: Re: regression failures on WIndows in machines with some non-English locales] Andrew Dunstan <[email protected]>
2005-11-01 13:41 ` Tom Lane <[email protected]>
2005-11-01 15:36 ` Re: [Fwd: Re: regression failures on WIndows in machines Andrew Dunstan <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[email protected]>
2026-04-20 11:19 [PATCH 2/2] REPACK: do not require LOGIN privileges Álvaro Herrera <[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