]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Allow resetting unknown custom GUCs with reserved prefixes.
authorNathan Bossart <nathan@postgresql.org>
Fri, 1 Aug 2025 21:52:11 +0000 (16:52 -0500)
committerNathan Bossart <nathan@postgresql.org>
Fri, 1 Aug 2025 21:52:11 +0000 (16:52 -0500)
commitf79ca73d75cb551f46b37b14407ae42a50b6d38c
treefa8fe446fb3c1a676051d4696759cebc4cfb1d54
parent434d2d147b589206c58b4cdae366f353fe63f4eb
Allow resetting unknown custom GUCs with reserved prefixes.

Currently, ALTER DATABASE/ROLE/SYSTEM RESET [ALL] with an unknown
custom GUC with a prefix reserved by MarkGUCPrefixReserved() errors
(unless a superuser runs a RESET ALL variant).  This is problematic
for cases such as an extension library upgrade that removes a GUC.
To fix, simply make sure the relevant code paths explicitly allow
it.  Note that we require superuser or privileges on the parameter
to reset it.  This is perhaps a bit more restrictive than is
necessary, but it's not clear whether further relaxing the
requirements is safe.

Oversight in commit 88103567cb.  The ALTER SYSTEM fix is dependent
on commit 2d870b4aef, which first appeared in v17.  Unfortunately,
back-patching that commit would introduce ABI breakage, and while
that breakage seems unlikely to bother anyone, it doesn't seem
worth the risk.  Hence, the ALTER SYSTEM part of this commit is
omitted on v15 and v16.

Reported-by: Mert Alev <mert@futo.org>
Reviewed-by: Laurenz Albe <laurenz.albe@cybertec.at>
Discussion: https://postgr.es/m/18964-ba09dea8c98fccd6%40postgresql.org
Backpatch-through: 15
contrib/auto_explain/Makefile
contrib/auto_explain/expected/alter_reset.out [new file with mode: 0644]
contrib/auto_explain/sql/alter_reset.sql [new file with mode: 0644]
src/backend/utils/misc/guc.c