mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
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
This commit is contained in:
@@ -493,6 +493,12 @@ bool Debug_print_parse = false;
|
||||
bool Debug_print_rewritten = false;
|
||||
bool Debug_pretty_print = true;
|
||||
|
||||
#ifdef DEBUG_NODE_TESTS_ENABLED
|
||||
bool Debug_copy_parse_plan_trees;
|
||||
bool Debug_write_read_parse_plan_trees;
|
||||
bool Debug_raw_expression_coverage_test;
|
||||
#endif
|
||||
|
||||
bool log_parser_stats = false;
|
||||
bool log_planner_stats = false;
|
||||
bool log_executor_stats = false;
|
||||
@@ -1294,6 +1300,59 @@ struct config_bool ConfigureNamesBool[] =
|
||||
false,
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
#ifdef DEBUG_NODE_TESTS_ENABLED
|
||||
{
|
||||
{"debug_copy_parse_plan_trees", PGC_SUSET, DEVELOPER_OPTIONS,
|
||||
gettext_noop("Set this to force all parse and plan trees to be passed through "
|
||||
"copyObject(), to facilitate catching errors and omissions in "
|
||||
"copyObject()."),
|
||||
NULL,
|
||||
GUC_NOT_IN_SAMPLE
|
||||
},
|
||||
&Debug_copy_parse_plan_trees,
|
||||
/* support for legacy compile-time setting */
|
||||
#ifdef COPY_PARSE_PLAN_TREES
|
||||
true,
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
{
|
||||
{"debug_write_read_parse_plan_trees", PGC_SUSET, DEVELOPER_OPTIONS,
|
||||
gettext_noop("Set this to force all parse and plan trees to be passed through "
|
||||
"outfuncs.c/readfuncs.c, to facilitate catching errors and omissions in "
|
||||
"those modules."),
|
||||
NULL,
|
||||
GUC_NOT_IN_SAMPLE
|
||||
},
|
||||
&Debug_write_read_parse_plan_trees,
|
||||
/* support for legacy compile-time setting */
|
||||
#ifdef WRITE_READ_PARSE_PLAN_TREES
|
||||
true,
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
{
|
||||
{"debug_raw_expression_coverage_test", PGC_SUSET, DEVELOPER_OPTIONS,
|
||||
gettext_noop("Set this to force all raw parse trees for DML statements to be scanned "
|
||||
"by raw_expression_tree_walker(), to facilitate catching errors and "
|
||||
"omissions in that function."),
|
||||
NULL,
|
||||
GUC_NOT_IN_SAMPLE
|
||||
},
|
||||
&Debug_raw_expression_coverage_test,
|
||||
/* support for legacy compile-time setting */
|
||||
#ifdef RAW_EXPRESSION_COVERAGE_TEST
|
||||
true,
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
#endif /* DEBUG_NODE_TESTS_ENABLED */
|
||||
{
|
||||
{"debug_print_parse", PGC_USERSET, LOGGING_WHAT,
|
||||
gettext_noop("Logs each query's parse tree."),
|
||||
|
||||
Reference in New Issue
Block a user