Skip to content

Commit 72826fb

Browse files
committed
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.
1 parent d5a7bf8 commit 72826fb

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/backend/optimizer/path/costsize.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,10 +1704,10 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo)
17041704
innerendsel;
17051705
Path sort_path; /* dummy for result of cost_sort */
17061706

1707-
/* Protect some assumptions below that rowcounts aren't zero */
1708-
if (outer_path_rows <= 0)
1707+
/* Protect some assumptions below that rowcounts aren't zero or NaN */
1708+
if (outer_path_rows <= 0 || isnan(outer_path_rows))
17091709
outer_path_rows = 1;
1710-
if (inner_path_rows <= 0)
1710+
if (inner_path_rows <= 0 || isnan(inner_path_rows))
17111711
inner_path_rows = 1;
17121712

17131713
if (!enable_mergejoin)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy