pgsql: Allow ALTER SYSTEM to set unrecognized custom GUCs.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Allow ALTER SYSTEM to set unrecognized custom GUCs.
Дата
Msg-id E1quFsr-001h9F-3Z@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Allow ALTER SYSTEM to set unrecognized custom GUCs.

Previously, ALTER SYSTEM failed if the target GUC wasn't present in
the session's GUC hashtable.  That is a reasonable behavior for core
(single-part) GUC names, and for custom GUCs for which we have loaded
an extension that's reserved the prefix.  But it's unnecessarily
restrictive otherwise, and it also causes inconsistent behavior:
you can "ALTER SYSTEM SET foo.bar" only if you did "SET foo.bar"
earlier in the session.  That's fairly silly.

Hence, refactor things so that we can execute ALTER SYSTEM even
if the variable doesn't have a GUC hashtable entry, as long as the
name meets the custom-variable naming requirements and does not
have a reserved prefix.  (It's safe to do this even if the
variable belongs to an extension we currently don't have loaded.
A bad value will at worst cause a WARNING when the extension
does get loaded.)

Also, adjust GRANT ON PARAMETER to have the same opinions about
whether to allow an unrecognized GUC name, and to throw the
same errors if not (it previously used a one-size-fits-all
message for several distinguishable conditions).  By default,
only a superuser will be allowed to do ALTER SYSTEM SET on an
unrecognized name, but it's possible to GRANT the ability to
do it.

Patch by me, pursuant to a documentation complaint from
Gavin Panella.  Arguably this is a bug fix, but given the
lack of other complaints I'll refrain from back-patching.

Discussion: https://postgr.es/m/2617358.1697501956@sss.pgh.pa.us
Discussion: https://postgr.es/m/169746329791.169914.16613647309012285391@wrigleys.postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/2d870b4aeff174ea3b8a0837bc2065c820fb43e2

Modified Files
--------------
src/backend/catalog/pg_parameter_acl.c             |   6 +-
src/backend/utils/misc/guc.c                       | 218 ++++++++++++---------
src/include/utils/guc.h                            |   2 +-
.../modules/unsafe_tests/expected/guc_privs.out    |  26 ++-
src/test/modules/unsafe_tests/sql/guc_privs.sql    |  14 ++
5 files changed, 170 insertions(+), 96 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: Make some error strings more generic
Следующее
От: Thomas Munro
Дата:
Сообщение: pgsql: Fix min_dynamic_shared_memory on Windows.