Fix new auto_explain test case for Windows.
authorTom Lane <[email protected]>
Wed, 27 Jul 2022 22:58:20 +0000 (18:58 -0400)
committerTom Lane <[email protected]>
Wed, 27 Jul 2022 22:58:35 +0000 (18:58 -0400)
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/[email protected]

contrib/auto_explain/t/001_auto_explain.pl

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