On 3/31/22 11:32, Tom Lane wrote:
> Robert Haas <[email protected]> writes:
>> On Thu, Mar 31, 2022 at 10:52 AM Andrew Dunstan <[email protected]> wrote:
>>> We should probably fix the test though, so it doesn't require Unix
>>> sockets. It should be possible, although I haven't looked yet to see how.
>> Our mutual colleague Neha Sharma pointed out this email message to me:
>> http://postgr.es/m/[email protected]
Yep, that's kinda what I was expecting.
>> I actually don't understand why using pg_regress --auth-extra would
>> fix it, or what that option does, or why we're even running pg_regress
>> at all in PostgreSQL::Test::Cluster::init. I think it might be to fix
>> this exact issue, but there's no SGML documentation for pg_regress,
I really don't know why this stuff is in pg_regress at all. It seems
rather odd to me and it's annoyed me for a while. But that's a fight for
another day.
> I'm not volunteering to fix that, but this comment in pg_regress.c
> is probably adequately illuminating:
>
> * Rewrite pg_hba.conf and pg_ident.conf to use SSPI authentication. Permit
> * the current OS user to authenticate as the bootstrap superuser and as any
> * user named in a --create-role option.
>
> This script is creating users manually rather than letting the TAP
> infrastructure do it, which is an antipattern.
>
>
Yeah, I think the fix is as simple as the attached.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
diff --git a/contrib/basebackup_to_shell/t/001_basic.pl b/contrib/basebackup_to_shell/t/001_basic.pl
index 57534b62c8..d246a01cfa 100644
--- a/contrib/basebackup_to_shell/t/001_basic.pl
+++ b/contrib/basebackup_to_shell/t/001_basic.pl
@@ -17,11 +17,12 @@ if (!defined $gzip || $gzip eq '')
}
my $node = PostgreSQL::Test::Cluster->new('primary');
-$node->init('allows_streaming' => 1);
+$node->init('allows_streaming' => 1),
+ auth_extra => [ '--create-role', 'backupuser' ]);
$node->append_conf('postgresql.conf',
"shared_preload_libraries = 'basebackup_to_shell'");
$node->start;
-$node->safe_psql('postgres', 'CREATE USER backupuser REPLICATION');
+$node->safe_psql('postgres', 'ALTER USER backupuser REPLICATION');
$node->safe_psql('postgres', 'CREATE ROLE trustworthy');
# For nearly all pg_basebackup invocations some options should be specified,