Add support for file inclusions in HBA and ident configuration files
authorMichael Paquier <michael@paquier.xyz>
Thu, 24 Nov 2022 04:51:34 +0000 (13:51 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 24 Nov 2022 04:51:34 +0000 (13:51 +0900)
commita54b658ce77b6705eb1f997b416c2e820a77946c
tree137432cc6f2ee4804660e124ffa76b5d18e79d3e
parentd09dbeb9bde6b9faabd30e887eff4493331d6424
Add support for file inclusions in HBA and ident configuration files

pg_hba.conf and pg_ident.conf gain support for three record keywords:
- "include", to include a file.
- "include_if_exists", to include a file, ignoring it if missing.
- "include_dir", to include a directory of files.  These are classified
by name (C locale, mostly) and need to be prefixed by ".conf", hence
following the same rules as GUCs.

This commit relies on the refactoring pieces done in efc9816ad6c528,
783e8c6 and 1b73d0b, adding a small wrapper to build a list of
TokenizedAuthLines (tokenize_include_file), and the code is shaped to
offer some symmetry with what is done for GUCs with the same options.

pg_hba_file_rules and pg_ident_file_mappings gain a new field called
file_name, to track from which file a record is located, taking
advantage of the addition of rule_number in c591300 to offer an
organized view of the HBA or ident records loaded.

Bump catalog version.

Author: Julien Rouhaud
Reviewed-by: Michael Paquier
Discussion: https://postgr.es/m/20220223045959.35ipdsvbxcstrhya@jrouhaud
doc/src/sgml/client-auth.sgml
doc/src/sgml/system-views.sgml
src/backend/libpq/hba.c
src/backend/libpq/pg_hba.conf.sample
src/backend/libpq/pg_ident.conf.sample
src/backend/utils/adt/hbafuncs.c
src/include/catalog/catversion.h
src/include/catalog/pg_proc.dat
src/test/regress/expected/rules.out