aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/utils/adt/ruleutils.c33
-rw-r--r--src/test/regress/expected/join.out8
-rw-r--r--src/test/regress/expected/subselect.out2
3 files changed, 9 insertions, 34 deletions
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index c5a49d0be34..b4c04075887 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -7896,12 +7896,10 @@ find_param_referent(Param *param, deparse_context *context,
{
deparse_namespace *dpns;
Plan *child_plan;
- bool in_same_plan_level;
ListCell *lc;
dpns = (deparse_namespace *) linitial(context->namespaces);
child_plan = dpns->plan;
- in_same_plan_level = true;
foreach(lc, dpns->ancestors)
{
@@ -7909,13 +7907,10 @@ find_param_referent(Param *param, deparse_context *context,
ListCell *lc2;
/*
- * NestLoops transmit params to their inner child only; also, once
- * we've crawled up out of a subplan, this couldn't possibly be
- * the right match.
+ * NestLoops transmit params to their inner child only.
*/
if (IsA(ancestor, NestLoop) &&
- child_plan == innerPlan(ancestor) &&
- in_same_plan_level)
+ child_plan == innerPlan(ancestor))
{
NestLoop *nl = (NestLoop *) ancestor;
@@ -7973,34 +7968,14 @@ find_param_referent(Param *param, deparse_context *context,
}
}
- /* We have emerged from a subplan. */
- in_same_plan_level = false;
-
/* SubPlan isn't a kind of Plan, so skip the rest */
continue;
}
/*
- * Check to see if we're emerging from an initplan of the current
- * ancestor plan. Initplans never have any parParams, so no need
- * to search that list, but we need to know if we should reset
- * in_same_plan_level.
+ * We need not consider the ancestor's initPlan list, since
+ * initplans never have any parParams.
*/
- foreach(lc2, ((Plan *) ancestor)->initPlan)
- {
- SubPlan *subplan = lfirst_node(SubPlan, lc2);
-
- if (child_plan != (Plan *) list_nth(dpns->subplans,
- subplan->plan_id - 1))
- continue;
-
- /* No parameters to be had here. */
- Assert(subplan->parParam == NIL);
-
- /* We have emerged from an initplan. */
- in_same_plan_level = false;
- break;
- }
/* No luck, crawl up to next ancestor */
child_plan = (Plan *) ancestor;
diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out
index 93583710725..80638d84a04 100644
--- a/src/test/regress/expected/join.out
+++ b/src/test/regress/expected/join.out
@@ -6074,8 +6074,8 @@ lateral (select * from int8_tbl t1,
where q2 = (select greatest(t1.q1,t2.q2))
and (select v.id=0)) offset 0) ss2) ss
where t1.q1 = ss.q2) ss0;
- QUERY PLAN
------------------------------------------------------------------
+ QUERY PLAN
+----------------------------------------------------------------------
Nested Loop
Output: "*VALUES*".column1, t1.q1, t1.q2, ss2.q1, ss2.q2
-> Seq Scan on public.int8_tbl t1
@@ -6096,10 +6096,10 @@ lateral (select * from int8_tbl t1,
One-Time Filter: $4
InitPlan 1 (returns $2)
-> Result
- Output: GREATEST($0, t2.q2)
+ Output: GREATEST(t1.q1, t2.q2)
InitPlan 2 (returns $4)
-> Result
- Output: ($3 = 0)
+ Output: ("*VALUES*".column1 = 0)
-> Seq Scan on public.int8_tbl t3
Output: t3.q1, t3.q2
Filter: (t3.q2 = $2)
diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out
index 63d26d44fc3..22af8fafa17 100644
--- a/src/test/regress/expected/subselect.out
+++ b/src/test/regress/expected/subselect.out
@@ -1155,7 +1155,7 @@ where o.ten = 0;
SubPlan 1
-> Seq Scan on public.int4_tbl
Output: int4_tbl.f1
- Filter: (int4_tbl.f1 <= $0)
+ Filter: (int4_tbl.f1 <= o.hundred)
(14 rows)
select sum(ss.tst::int) from