diff options
| author | David Rowley | 2023-02-15 08:21:59 +0000 |
|---|---|---|
| committer | David Rowley | 2023-02-15 08:21:59 +0000 |
| commit | 5352ca22e0012d48055453ca9992a9515d811291 (patch) | |
| tree | b247f2abbca2b0198280a69117a175c93fe4241b /src/backend/optimizer/plan | |
| parent | 8e0e0698f12bd77da38f6863ecdbe88a63ed49dc (diff) | |
Rename force_parallel_mode to debug_parallel_query
force_parallel_mode is meant to be used to allow us to exercise the
parallel query infrastructure to ensure that it's working as we expect.
It seems some users think this GUC is for forcing the query planner into
picking a parallel plan regardless of the costs. A quick look at the
documentation would have made them realize that they were wrong, but the
GUC is likely too conveniently named which, evidently, seems to often
result in users expecting that it forces the planner into usefully
parallelizing queries.
Here we rename the GUC to something which casual users are less likely to
mistakenly think is what they need to make their query run more quickly.
For now, the old name can still be used. We'll revisit if the old name
mapping can be removed once the buildfarm configs are all updated.
Reviewed-by: John Naylor
Discussion: https://postgr.es/m/CAApHDvrsOi92_uA7PEaHZMH-S4Xv+MGhQWA+GrP8b1kjpS1HjQ@mail.gmail.com
Diffstat (limited to 'src/backend/optimizer/plan')
| -rw-r--r-- | src/backend/optimizer/plan/planmain.c | 4 | ||||
| -rw-r--r-- | src/backend/optimizer/plan/planner.c | 20 |
2 files changed, 12 insertions, 12 deletions
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index 4c17407e5df..7afd434c601 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -114,12 +114,12 @@ query_planner(PlannerInfo *root, * Anything parallel-restricted in the query tlist will be * dealt with later.) This is normally pretty silly, because * a Result-only plan would never be interesting to - * parallelize. However, if force_parallel_mode is on, then + * parallelize. However, if debug_parallel_query is on, then * we want to execute the Result in a parallel worker if * possible, so we must do this. */ if (root->glob->parallelModeOK && - force_parallel_mode != FORCE_PARALLEL_OFF) + debug_parallel_query != DEBUG_PARALLEL_OFF) final_rel->consider_parallel = is_parallel_safe(root, parse->jointree->quals); diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index db5ff6fdca4..a1873ce26d4 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -70,7 +70,7 @@ /* GUC parameters */ double cursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION; -int force_parallel_mode = FORCE_PARALLEL_OFF; +int debug_parallel_query = DEBUG_PARALLEL_OFF; bool parallel_leader_participation = true; /* Hook for plugins to get control in planner() */ @@ -364,12 +364,12 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, * true during plan creation if a Gather or Gather Merge plan is actually * created (cf. create_gather_plan, create_gather_merge_plan). * - * However, if force_parallel_mode = on or force_parallel_mode = regress, - * then we impose parallel mode whenever it's safe to do so, even if the - * final plan doesn't use parallelism. It's not safe to do so if the - * query contains anything parallel-unsafe; parallelModeOK will be false - * in that case. Note that parallelModeOK can't change after this point. - * Otherwise, everything in the query is either parallel-safe or + * However, if debug_parallel_query = on or debug_parallel_query = + * regress, then we impose parallel mode whenever it's safe to do so, even + * if the final plan doesn't use parallelism. It's not safe to do so if + * the query contains anything parallel-unsafe; parallelModeOK will be + * false in that case. Note that parallelModeOK can't change after this + * point. Otherwise, everything in the query is either parallel-safe or * parallel-restricted, and in either case it should be OK to impose * parallel-mode restrictions. If that ends up breaking something, then * either some function the user included in the query is incorrectly @@ -377,7 +377,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, * parallel-unsafe, or else the query planner itself has a bug. */ glob->parallelModeNeeded = glob->parallelModeOK && - (force_parallel_mode != FORCE_PARALLEL_OFF); + (debug_parallel_query != DEBUG_PARALLEL_OFF); /* Determine what fraction of the plan is likely to be scanned */ if (cursorOptions & CURSOR_OPT_FAST_PLAN) @@ -431,7 +431,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, * Optionally add a Gather node for testing purposes, provided this is * actually a safe thing to do. */ - if (force_parallel_mode != FORCE_PARALLEL_OFF && top_plan->parallel_safe) + if (debug_parallel_query != DEBUG_PARALLEL_OFF && top_plan->parallel_safe) { Gather *gather = makeNode(Gather); @@ -449,7 +449,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, gather->plan.righttree = NULL; gather->num_workers = 1; gather->single_copy = true; - gather->invisible = (force_parallel_mode == FORCE_PARALLEL_REGRESS); + gather->invisible = (debug_parallel_query == DEBUG_PARALLEL_REGRESS); /* * Since this Gather has no parallel-aware descendants to signal to, |
