summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2018-05-07 04:54:21 +0000
committerPavan Deolasee2018-05-07 05:47:09 +0000
commit565b883f63ed7a122b356948bc2a636940533e9f (patch)
tree0c219136be7821740490a97d6312ef2636b0ee70
parent34d7aed54ac58544aa5f4acf3e0909ec09c3a982 (diff)
Do not try to show targetlist of a RemoteSubplan on top of ModifyTable
We do some special processing for RemoteSubplan with returning lists. But the EXPLAIN plan mechanism is not adequetly trained to handle that special crafting. So for now do not try to print the target list in the EXPLAIN output.
-rw-r--r--src/backend/commands/explain.c5
-rw-r--r--src/test/regress/expected/updatable_views.out3
2 files changed, 6 insertions, 2 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 597e47f53a..69dc8d0508 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -1965,6 +1965,11 @@ show_plan_tlist(PlanState *planstate, List *ancestors, ExplainState *es)
return;
if (IsA(plan, RecursiveUnion))
return;
+ /* Ditto for RemoteSubplan on top of ModifyTable */
+ if (IsA(plan, RemoteSubplan) && plan->lefttree &&
+ IsA(plan->lefttree, ModifyTable) &&
+ (((ModifyTable *) plan->lefttree)->returningLists != NIL))
+ return;
/*
* Likewise for ForeignScan that executes a direct INSERT/UPDATE/DELETE
diff --git a/src/test/regress/expected/updatable_views.out b/src/test/regress/expected/updatable_views.out
index 1ce6c536c4..5a315715f1 100644
--- a/src/test/regress/expected/updatable_views.out
+++ b/src/test/regress/expected/updatable_views.out
@@ -1132,12 +1132,11 @@ EXPLAIN (verbose, costs off, nodes off) UPDATE rw_view1 SET b = b + 1 RETURNING
QUERY PLAN
-------------------------------------------------------------------
Remote Subquery Scan on any
- Output: base_tbl.a, base_tbl.b
-> Update on public.base_tbl
Output: base_tbl.a, base_tbl.b
-> Seq Scan on public.base_tbl
Output: base_tbl.a, (base_tbl.b + 1), base_tbl.ctid
-(6 rows)
+(5 rows)
UPDATE rw_view1 SET b = b + 1 RETURNING *;
a | b