Modify query on pg_hba_file_rules to check for errors in regression tests

The regression tests include a query to check the execution path of
pg_hba_file_rules, but it has never checked that a given cluster has
correct contents in pg_hba.conf.  This commit extends the query of
pg_hba_file_rules to report any errors if anything bad is found.  For
EXEC_BACKEND builds, any connection attempt would fail when loading
pg_hba.conf if any incorrect content is found when parsed, so a failure
would be detected before even running this query.  However, this can
become handy for clusters where pg_hba.conf can be reloaded, where new
connection attempts are not subject to a fresh loading of pg_hba.conf.

Author: Julien Rouhaud, based on an idea from me
Discussion: https://postgr.es/m/YkFhpydhyeNNo3Xl@paquier.xyz
This commit is contained in:
Michael Paquier 2022-03-29 09:06:51 +09:00
parent 33a377608f
commit 091a971bb5
2 changed files with 9 additions and 7 deletions

View File

@ -48,11 +48,12 @@ select count(*) >= 0 as ok from pg_file_settings;
t
(1 row)
-- There will surely be at least one rule
select count(*) > 0 as ok from pg_hba_file_rules;
ok
----
t
-- There will surely be at least one rule, with no errors.
select count(*) > 0 as ok, count(*) FILTER (WHERE error IS NOT NULL) = 0 AS no_err
from pg_hba_file_rules;
ok | no_err
----+--------
t | t
(1 row)
-- There will surely be at least one active lock

View File

@ -25,8 +25,9 @@ select count(*) = 0 as ok from pg_cursors;
select count(*) >= 0 as ok from pg_file_settings;
-- There will surely be at least one rule
select count(*) > 0 as ok from pg_hba_file_rules;
-- There will surely be at least one rule, with no errors.
select count(*) > 0 as ok, count(*) FILTER (WHERE error IS NOT NULL) = 0 AS no_err
from pg_hba_file_rules;
-- There will surely be at least one active lock
select count(*) > 0 as ok from pg_locks;