mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Fix possible crash in add_paths_to_append_rel()
While working on a8a968a82, I failed to consider that
cheapest_startup_path can be NULL when there is no non-parameterized
path in the pathlist. This is well documented in set_cheapest(), I just
failed to notice.
Here we adjust the code to just check if the RelOptInfo has a
cheapest_startup_path set before adding it to the startup_subpaths list.
Reported-by: Richard Guo
Author: Richard Guo
Discussion: https://postgr.es/m/CAMbWs49w3t03V69XhdCuw+GDwivny4uQUxrkVp6Gejaspt0wMQ@mail.gmail.com
This commit is contained in:
@@ -1350,14 +1350,17 @@ add_paths_to_append_rel(PlannerInfo *root, RelOptInfo *rel,
|
||||
|
||||
/*
|
||||
* When the planner is considering cheap startup plans, we'll also
|
||||
* collect all the cheapest_startup_paths and build an AppendPath
|
||||
* containing those as subpaths.
|
||||
* collect all the cheapest_startup_paths (if set) and build an
|
||||
* AppendPath containing those as subpaths.
|
||||
*/
|
||||
if (rel->consider_startup && childrel->pathlist != NIL &&
|
||||
childrel->cheapest_startup_path->param_info == NULL)
|
||||
if (rel->consider_startup && childrel->cheapest_startup_path != NULL)
|
||||
{
|
||||
/* cheapest_startup_path must not be a parameterized path. */
|
||||
Assert(childrel->cheapest_startup_path->param_info == NULL);
|
||||
accumulate_append_subpath(childrel->cheapest_startup_path,
|
||||
&startup_subpaths,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
startup_subpaths_valid = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user