diff options
author | Pavan Deolasee | 2018-05-07 04:54:21 +0000 |
---|---|---|
committer | Pavan Deolasee | 2018-05-07 05:47:09 +0000 |
commit | 565b883f63ed7a122b356948bc2a636940533e9f (patch) | |
tree | 0c219136be7821740490a97d6312ef2636b0ee70 | |
parent | 34d7aed54ac58544aa5f4acf3e0909ec09c3a982 (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.c | 5 | ||||
-rw-r--r-- | src/test/regress/expected/updatable_views.out | 3 |
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 |