From: Tom Lane Date: Thu, 22 Mar 2018 00:11:07 +0000 (-0400) Subject: Prevent extensions from creating custom GUCs that are GUC_LIST_QUOTE. X-Git-Tag: REL_11_BETA1~535 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=846b5a525746b83813771ec4720d664408c47c43;p=thirdparty%2Fpostgresql.git Prevent extensions from creating custom GUCs that are GUC_LIST_QUOTE. Pending some solution for the problems noted in commit 742869946, disallow dynamic creation of GUC_LIST_QUOTE variables. If there are any extensions out there using this feature, they'd not be happy for us to start enforcing this rule in minor releases, so this is a HEAD-only change. The previous commit didn't make things any worse than they already were for such cases. Discussion: https://postgr.es/m/20180111064900.GA51030@paquier.xyz --- diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 398680ab12c..153373ead02 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -7606,6 +7606,15 @@ init_custom_variable(const char *name, !process_shared_preload_libraries_in_progress) elog(FATAL, "cannot create PGC_POSTMASTER variables after startup"); + /* + * We can't support custom GUC_LIST_QUOTE variables, because the wrong + * things would happen if such a variable were set or pg_dump'd when the + * defining extension isn't loaded. Again, treat this as fatal because + * the loadable module may be partly initialized already. + */ + if (flags & GUC_LIST_QUOTE) + elog(FATAL, "extensions cannot define GUC_LIST_QUOTE variables"); + /* * Before pljava commit 398f3b876ed402bdaec8bc804f29e2be95c75139 * (2015-12-15), two of that module's PGC_USERSET variables facilitated