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.
Showing
- src/backend/optimizer/plan/createplan.c 48 additions, 36 deletionssrc/backend/optimizer/plan/createplan.c
- src/backend/optimizer/plan/planagg.c 3 additions, 2 deletionssrc/backend/optimizer/plan/planagg.c
- src/backend/optimizer/plan/planner.c 147 additions, 61 deletionssrc/backend/optimizer/plan/planner.c
- src/include/optimizer/planmain.h 3 additions, 2 deletionssrc/include/optimizer/planmain.h
Loading
Please register or sign in to comment