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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy