mirror of
https://github.com/postgres/postgres.git
synced 2025-10-28 11:55:03 +03:00
When a relation has been proven empty by constraint exclusion, propagate that
knowledge up through any joins it participates in. We were doing that already in some special cases but not in the general case. Also, defend against zero row estimates for the input relations in cost_mergejoin --- this fix may have eliminated the only scenario in which that can happen, but be safe. Per report from Alex Solovey.
This commit is contained in:
@@ -54,7 +54,7 @@
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.191 2008/01/01 19:45:50 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.192 2008/03/24 21:53:03 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1385,6 +1385,12 @@ cost_mergejoin(MergePath *path, PlannerInfo *root)
|
||||
Selectivity joininfactor;
|
||||
Path sort_path; /* dummy for result of cost_sort */
|
||||
|
||||
/* Protect some assumptions below that rowcounts aren't zero */
|
||||
if (outer_path_rows <= 0)
|
||||
outer_path_rows = 1;
|
||||
if (inner_path_rows <= 0)
|
||||
inner_path_rows = 1;
|
||||
|
||||
if (!enable_mergejoin)
|
||||
startup_cost += disable_cost;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user