diff options
| author | Tom Lane | 2005-08-18 17:51:12 +0000 |
|---|---|---|
| committer | Tom Lane | 2005-08-18 17:51:12 +0000 |
| commit | dfdf07aab109fd883877fd11819ac2e2981093d8 (patch) | |
| tree | edc7e57401a1a947a159f2c5b6f5b3dd7b86c203 /src/include | |
| parent | 96f63aebc8af9237ee6ea1764c4efba1ea6c4571 (diff) | |
Fix up LIMIT/OFFSET planning so that we cope with non-constant LIMIT
or OFFSET clauses by using estimate_expression_value(). The main advantage
of this is that if the expression is a Param and we have a value for the
Param, we'll use that value rather than defaulting. Also, fix some
thinkos in the logic for combining LIMIT/OFFSET with an externally
supplied tuple fraction (this covers cases like EXISTS(...LIMIT...)).
And make sure the results of all this are shown by EXPLAIN. Per a
gripe from Merlin Moncure.
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/optimizer/planmain.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h index 45186351860..474a14da9a0 100644 --- a/src/include/optimizer/planmain.h +++ b/src/include/optimizer/planmain.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.86 2005/06/05 22:32:58 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.87 2005/08/18 17:51:12 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -54,7 +54,8 @@ extern Group *make_group(PlannerInfo *root, List *tlist, List *qual, extern Material *make_material(Plan *lefttree); extern Plan *materialize_finished_plan(Plan *subplan); extern Unique *make_unique(Plan *lefttree, List *distinctList); -extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount); +extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount, + int offset_est, int count_est); extern SetOp *make_setop(SetOpCmd cmd, Plan *lefttree, List *distinctList, AttrNumber flagColIdx); extern Result *make_result(List *tlist, Node *resconstantqual, Plan *subplan); |
