Fix new auto_explain test case for Windows.

In commit 7c34555f8, I overlooked the need to configure SSPI
on Windows to allow login as the non-superuser role.
Fix that by adding auth_extra/--create-role incantation
(which, oddly enough, doesn't actually create the role).
Per buildfarm.

While here, upgrade the mechanism for temporarily setting
$ENV{PGUSER}, as per recommendation from ilmari.

Discussion: https://postgr.es/m/87edy7j1zz.fsf@wibble.ilmari.org
This commit is contained in:
Tom Lane 2022-07-27 18:58:20 -04:00
parent a0c632c1de
commit 1d01d19853
1 changed files with 20 additions and 19 deletions

View File

@ -28,7 +28,7 @@ sub query_log
} }
my $node = PostgreSQL::Test::Cluster->new('main'); my $node = PostgreSQL::Test::Cluster->new('main');
$node->init; $node->init('auth_extra' => [ '--create-role', 'regress_user1' ]);
$node->append_conf('postgresql.conf', $node->append_conf('postgresql.conf',
"session_preload_libraries = 'auto_explain'"); "session_preload_libraries = 'auto_explain'");
$node->append_conf('postgresql.conf', "auto_explain.log_min_duration = 0"); $node->append_conf('postgresql.conf', "auto_explain.log_min_duration = 0");
@ -115,29 +115,30 @@ CREATE USER regress_user1;
GRANT SET ON PARAMETER auto_explain.log_format TO regress_user1; GRANT SET ON PARAMETER auto_explain.log_format TO regress_user1;
}); });
$ENV{PGUSER} = "regress_user1"; {
local $ENV{PGUSER} = "regress_user1";
$log_contents = query_log( $log_contents = query_log(
$node, $node,
"SELECT * FROM pg_database;", "SELECT * FROM pg_database;",
{ "auto_explain.log_format" => "json" }); { "auto_explain.log_format" => "json" });
like( like(
$log_contents, $log_contents,
qr/"Query Text": "SELECT \* FROM pg_database;"/, qr/"Query Text": "SELECT \* FROM pg_database;"/,
"query text logged, json mode selected by non-superuser"); "query text logged, json mode selected by non-superuser");
$log_contents = query_log( $log_contents = query_log(
$node, $node,
"SELECT * FROM pg_database;", "SELECT * FROM pg_database;",
{ "auto_explain.log_level" => "log" }); { "auto_explain.log_level" => "log" });
like( like(
$log_contents, $log_contents,
qr/WARNING: permission denied to set parameter "auto_explain\.log_level"/, qr/WARNING: permission denied to set parameter "auto_explain\.log_level"/,
"permission failure logged"); "permission failure logged");
$ENV{PGUSER} = undef; } # end queries run as regress_user1
$node->safe_psql( $node->safe_psql(
"postgres", q{ "postgres", q{