Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit bef7640

Browse files
committed
Fix oversights in processing of LIMIT expressions during planning.
1 parent 1697568 commit bef7640

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/backend/optimizer/plan/setrefs.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.100 2004/01/06 04:31:01 tgl Exp $
12+
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.101 2004/05/11 13:15:15 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -171,7 +171,6 @@ set_plan_references(Plan *plan, List *rtable)
171171
case T_Sort:
172172
case T_Unique:
173173
case T_SetOp:
174-
case T_Limit:
175174

176175
/*
177176
* These plan types don't actually bother to evaluate their
@@ -184,6 +183,15 @@ set_plan_references(Plan *plan, List *rtable)
184183
* the plan tree!
185184
*/
186185
break;
186+
case T_Limit:
187+
/*
188+
* Like the plan types above, Limit doesn't evaluate its
189+
* tlist or quals. It does have live expressions for
190+
* limit/offset, however.
191+
*/
192+
fix_expr_references(plan, ((Limit *) plan)->limitOffset);
193+
fix_expr_references(plan, ((Limit *) plan)->limitCount);
194+
break;
187195
case T_Agg:
188196
case T_Group:
189197
set_uppernode_references(plan, (Index) 0);

src/backend/optimizer/plan/subselect.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.88 2004/02/03 17:34:03 tgl Exp $
10+
* $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.89 2004/05/11 13:15:15 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -1063,14 +1063,20 @@ finalize_plan(Plan *plan, List *rtable,
10631063
&context);
10641064
break;
10651065

1066+
case T_Limit:
1067+
finalize_primnode(((Limit *) plan)->limitOffset,
1068+
&context);
1069+
finalize_primnode(((Limit *) plan)->limitCount,
1070+
&context);
1071+
break;
1072+
10661073
case T_Hash:
10671074
case T_Agg:
10681075
case T_SeqScan:
10691076
case T_Material:
10701077
case T_Sort:
10711078
case T_Unique:
10721079
case T_SetOp:
1073-
case T_Limit:
10741080
case T_Group:
10751081
break;
10761082

0 commit comments

Comments
 (0)