postgresql/src
Michael Paquier a73952b795 Add check on initial and boot values when loading GUCs
This commit adds a function to perform a cross-check between the initial
value of the C declaration associated to a GUC and its actual boot
value in assert-enabled builds.  The purpose of this is to prevent
anybody reading these C declarations from being fooled by mismatched
values before they are loaded at program startup.

The following rules apply depending on the GUC type:
* bool - can be false, or same as boot_val.
* int - can be 0, or same as the boot_val.
* real - can be 0.0, or same as the boot_val.
* string - can be NULL, or strcmp'd equal to the boot_val.
* enum - equal to the boot_val.

This is done for the system as well custom GUCs loaded by external
modules, which may require extension developers to adapt the C
declaration of the variables used by these GUCs (testing this change
with some of my own modules has allowed me to catch some stupid typos,
FWIW).  This may finish by being a bad experiment depending on the
feedbcak received, but let's see how it goes.

Author: Peter Smith
Reviewed-by: Nathan Bossart, Tom Lane, Michael Paquier, Justin Pryzby
Discussion: https://postgr.es/m/CAHut+PtHE0XSfjjRQ6D4v7+dqzCw=d+1a64ujra4EX8aoc_Z+w@mail.gmail.com
2022-10-31 13:54:23 +09:00
..
backend Add check on initial and boot values when loading GUCs 2022-10-31 13:54:23 +09:00
bin Improve tab completion for ALTER STATISTICS <name> SET in psql 2022-10-24 15:46:42 +09:00
common Remove AssertArg and AssertState 2022-10-28 09:19:06 +02:00
fe_utils meson: Add support for building with precompiled headers 2022-10-06 17:19:30 -07:00
include Clean up some inconsistencies with GUC declarations 2022-10-31 12:44:48 +09:00
interfaces libpq: Reset singlerow flag correctly in pipeline mode 2022-10-14 19:06:26 +02:00
makefiles autoconf: Rely on ar supporting index creation 2022-10-07 11:53:39 -07:00
pl Store GUC data in a memory context, instead of using malloc(). 2022-10-14 12:10:48 -04:00
port Fix unlink() for STATUS_DELETE_PENDING on Windows. 2022-10-25 16:26:58 +13:00
template Move darwin sysroot determination into separate file 2022-09-01 16:54:19 -07:00
test Under has_wal_read_bug, skip recovery/t/032_relfilenode_reuse.pl. 2022-10-29 10:42:16 -07:00
timezone meson: Add windows resource files 2022-10-05 09:56:05 -07:00
tools Remove pgpid_t type, use pid_t instead 2022-10-22 10:45:19 +02:00
tutorial Update copyright for 2022 2022-01-07 19:04:57 -05:00
.gitignore
DEVELOPERS
Makefile Remove the option to build thread_test.c outside configure. 2020-10-21 12:08:48 -04:00
Makefile.global.in Make finding openssl program a configure or meson option 2022-10-20 21:05:42 +02:00
Makefile.shlib autoconf: Rely on ar supporting index creation 2022-10-07 11:53:39 -07:00
meson.build meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
nls-global.mk Fix for make unportability 2022-07-13 09:15:01 +02:00