diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2007-12-08 21:05:11 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2007-12-08 21:05:11 +0000 |
| commit | 9fd88436470482fc030d4c2328977b3cf66f01f1 (patch) | |
| tree | 129da1e991a90cd249a97332473f8f8cc849e19e /src/include/nodes/relation.h | |
| parent | 88216128546ffef136189fab9e02bae299ed406d (diff) | |
Fix mergejoin cost estimation so that we consider the statistical ranges of
the two join variables at both ends: not only trailing rows that need not be
scanned because there cannot be a match on the other side, but initial rows
that will be scanned without possibly having a match. This allows a more
realistic estimate of startup cost to be made, per recent pgsql-performance
discussion. In passing, fix a couple of bugs that had crept into
mergejoinscansel: it was not quite up to speed for the task of estimating
descending-order scans, which is a new requirement in 8.3.
Diffstat (limited to 'src/include/nodes/relation.h')
| -rw-r--r-- | src/include/nodes/relation.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index 2dce223d3a7..e82b00cdd46 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/relation.h,v 1.150 2007/11/15 22:25:17 momjian Exp $ + * $PostgreSQL: pgsql/src/include/nodes/relation.h,v 1.151 2007/12/08 21:05:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -993,8 +993,10 @@ typedef struct MergeScanSelCache int strategy; /* sort direction (ASC or DESC) */ bool nulls_first; /* do NULLs come before normal values? */ /* Results */ - Selectivity leftscansel; /* scan fraction for clause left side */ - Selectivity rightscansel; /* scan fraction for clause right side */ + Selectivity leftstartsel; /* first-join fraction for clause left side */ + Selectivity leftendsel; /* last-join fraction for clause left side */ + Selectivity rightstartsel; /* first-join fraction for clause right side */ + Selectivity rightendsel; /* last-join fraction for clause right side */ } MergeScanSelCache; /* |
