Re: GUC flags

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, pgsql-hackers@lists.postgresql.org, bruce@momjian.us, tgl@sss.pgh.pa.us
Date: 2022-02-06T05:09:45Z
Lists: pgsql-hackers
On Mon, Jan 31, 2022 at 04:56:45PM -0600, Justin Pryzby wrote:
> I'm not clear on what things are required/prohibited to allow/expect
> "installcheck" to pass.  It's possible that postgresql.conf doesn't even exist
> in the data dir, right ?

There are no written instructions AFAIK, but I have as personal rule
to not break the tests in configurations where they worked
previously.

> It's okay with me if the config_file-reading stuff isn't re-implemented.

Actually, I am thinking that we should implement it before retiring
completely check_guc, but not in the fashion you are suggesting.  I
would be tempted to add something in the TAP tests as of
src/test/misc/, where we initialize an instance to get the information
about all the GUCs from SQL, and map that to the sample file located
at pg_config --sharedir.  I actually have in my patch set for
pg_upgrade's TAP a perl routine that could be used for this purpose,
as of the following in Cluster.pm:

+=item $node->config_data($option)
+
+Grab some data from pg_config, with $option being the command switch
+used.
+
+=cut
+
+sub config_data
+{
+   my ($self, $option) = @_;
+   local %ENV = $self->_get_env();
+
+   my ($stdout, $stderr);
+   my $result =
+     IPC::Run::run [ $self->installed_command('pg_config'), $option
],
+     '>', \$stdout, '2>', \$stderr
+     or die "could not execute pg_config";
+   chomp($stdout);
+   $stdout =~ s/\r$//;
+
+   return $stdout;
+}

What do you think?  (I was thinking about applying that separately
anyway, to lower the load of the pg_upgrade patch a bit.)
--
Michael

Commits

  1. Add TAP test to automate the equivalent of check_guc, take two

  2. Retire src/backend/utils/misc/check_guc

  3. Add TAP test to automate the equivalent of check_guc

  4. Add PostgreSQL::Test::Cluster::config_data()

  5. Introduce pg_settings_get_flags() to find flags associated to a GUC

  6. Revert changes about warnings/errors for placeholders.

  7. Improve the description of various GUCs