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{