Thread: pgsql: Convert node test compile-time settings into run-time parameters

pgsql: Convert node test compile-time settings into run-time parameters

From
Peter Eisentraut
Date:
Convert node test compile-time settings into run-time parameters

This converts

    COPY_PARSE_PLAN_TREES
    WRITE_READ_PARSE_PLAN_TREES
    RAW_EXPRESSION_COVERAGE_TEST

into run-time parameters

    debug_copy_parse_plan_trees
    debug_write_read_parse_plan_trees
    debug_raw_expression_coverage_test

They can be activated for tests using PG_TEST_INITDB_EXTRA_OPTS.

The compile-time symbols are kept for build farm compatibility, but
they now just determine the default value of the run-time settings.

Furthermore, support for these settings is not compiled in at all
unless assertions are enabled, or the new symbol
DEBUG_NODE_TESTS_ENABLED is defined at compile time, or any of the
legacy compile-time setting symbols are defined.  So there is no
run-time overhead in production builds.  (This is similar to the
handling of DISCARD_CACHES_ENABLED.)

Discussion: https://www.postgresql.org/message-id/flat/30747bd8-f51e-4e0c-a310-a6e2c37ec8aa%40eisentraut.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/a292c98d62ddc0ad681f772ab91bf68ee399cb4b

Modified Files
--------------
.cirrus.tasks.yml                   |  3 +-
doc/src/sgml/config.sgml            | 71 +++++++++++++++++++++++++++++++++++++
src/backend/nodes/README            |  9 ++---
src/backend/nodes/read.c            | 12 +++----
src/backend/nodes/readfuncs.c       |  4 +--
src/backend/parser/analyze.c        | 44 ++++++++++++-----------
src/backend/tcop/postgres.c         | 30 +++++++++-------
src/backend/utils/misc/guc_tables.c | 59 ++++++++++++++++++++++++++++++
src/include/nodes/nodes.h           |  2 +-
src/include/nodes/readfuncs.h       |  2 +-
src/include/pg_config_manual.h      | 34 +++++++++---------
src/include/utils/guc.h             |  6 ++++
12 files changed, 212 insertions(+), 64 deletions(-)