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

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-05-20T07:28:39Z
Lists: pgsql-hackers

Attachments

This patch converts the compile-time settings

     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 effect is the same, but now you don't need to recompile in order to 
use these checks.

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

Possible concerns:

- Performance?  Looking for example at pg_parse_query() and its 
siblings, they also check for other debugging settings like 
log_parser_stats in the main code path, so it doesn't seem to be a concern.

- Access control?  I have these settings as PGC_USERSET for now. Maybe 
they should be PGC_SUSET?

Another thought:  Do we really need three separate settings?

Commits

  1. Convert node test compile-time settings into run-time parameters