mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Introduce a new GUC force_parallel_mode for testing purposes.
When force_parallel_mode = true, we enable the parallel mode restrictions for all queries for which this is believed to be safe. For the subset of those queries believed to be safe to run entirely within a worker, we spin up a worker and run the query there instead of running it in the original process. When force_parallel_mode = regress, make additional changes to allow the regression tests to run cleanly even though parallel workers have been injected under the hood. Taken together, this facilitates both better user testing and better regression testing of the parallelism code. Robert Haas, with help from Amit Kapila and Rushabh Lathia.
This commit is contained in:
@ -379,6 +379,19 @@ static const struct config_enum_entry huge_pages_options[] = {
|
||||
{NULL, 0, false}
|
||||
};
|
||||
|
||||
static const struct config_enum_entry force_parallel_mode_options[] = {
|
||||
{"off", FORCE_PARALLEL_OFF, false},
|
||||
{"on", FORCE_PARALLEL_ON, false},
|
||||
{"regress", FORCE_PARALLEL_REGRESS, false},
|
||||
{"true", FORCE_PARALLEL_ON, true},
|
||||
{"false", FORCE_PARALLEL_OFF, true},
|
||||
{"yes", FORCE_PARALLEL_ON, true},
|
||||
{"no", FORCE_PARALLEL_OFF, true},
|
||||
{"1", FORCE_PARALLEL_ON, true},
|
||||
{"0", FORCE_PARALLEL_OFF, true},
|
||||
{NULL, 0, false}
|
||||
};
|
||||
|
||||
/*
|
||||
* Options for enum values stored in other modules
|
||||
*/
|
||||
@ -863,6 +876,7 @@ static struct config_bool ConfigureNamesBool[] =
|
||||
true,
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"geqo", PGC_USERSET, QUERY_TUNING_GEQO,
|
||||
gettext_noop("Enables genetic query optimization."),
|
||||
@ -3672,6 +3686,16 @@ static struct config_enum ConfigureNamesEnum[] =
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"force_parallel_mode", PGC_USERSET, QUERY_TUNING_OTHER,
|
||||
gettext_noop("Forces use of parallel query facilities."),
|
||||
gettext_noop("If possible, run query using a parallel worker and with parallel restrictions.")
|
||||
},
|
||||
&force_parallel_mode,
|
||||
FORCE_PARALLEL_OFF, force_parallel_mode_options,
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
/* End-of-list marker */
|
||||
{
|
||||
{NULL, 0, 0, NULL, NULL}, NULL, 0, NULL, NULL, NULL, NULL
|
||||
|
Reference in New Issue
Block a user