mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-06 15:24:56 +08:00
Guard against incoming rowcount estimate of NaN in cost_mergejoin().
Although rowcount estimates really ought not be NaN, a bug elsewhere could perhaps result in that, and that would cause Assert failure in cost_mergejoin, which I believe to be the explanation for bug #5977 from Anton Kuznetsov. Seems like a good idea to expend a couple more cycles to prevent that, even though the real bug is elsewhere. Not back-patching, though, because we don't encourage running production systems with Asserts on.
This commit is contained in:
parent
d5a7bf8c11
commit
72826fb362
@ -1704,10 +1704,10 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo)
|
|||||||
innerendsel;
|
innerendsel;
|
||||||
Path sort_path; /* dummy for result of cost_sort */
|
Path sort_path; /* dummy for result of cost_sort */
|
||||||
|
|
||||||
/* Protect some assumptions below that rowcounts aren't zero */
|
/* Protect some assumptions below that rowcounts aren't zero or NaN */
|
||||||
if (outer_path_rows <= 0)
|
if (outer_path_rows <= 0 || isnan(outer_path_rows))
|
||||||
outer_path_rows = 1;
|
outer_path_rows = 1;
|
||||||
if (inner_path_rows <= 0)
|
if (inner_path_rows <= 0 || isnan(inner_path_rows))
|
||||||
inner_path_rows = 1;
|
inner_path_rows = 1;
|
||||||
|
|
||||||
if (!enable_mergejoin)
|
if (!enable_mergejoin)
|
||||||
|
Loading…
Reference in New Issue
Block a user