Prevent extensions from creating custom GUCs that are GUC_LIST_QUOTE.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 22 Mar 2018 00:11:07 +0000 (20:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 22 Mar 2018 00:11:07 +0000 (20:11 -0400)
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

src/backend/utils/misc/guc.c

index 398680ab12cc6c99c719cf04a7957c0f7504f9fe..153373ead029d5ae4d1b7ef49ffb8f1a5ac109ef 100644 (file)
@@ -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