summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/explain.c25
-rw-r--r--src/test/regress/expected/merge.out35
2 files changed, 31 insertions, 29 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index c461061fe9..2de546f16e 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -4068,10 +4068,27 @@ show_modifytable_info(ModifyTableState *mtstate, List *ancestors,
skipped_path = total - insert_path - update_path - delete_path;
Assert(skipped_path >= 0);
- ExplainPropertyFloat("Tuples Inserted", NULL, insert_path, 0, es);
- ExplainPropertyFloat("Tuples Updated", NULL, update_path, 0, es);
- ExplainPropertyFloat("Tuples Deleted", NULL, delete_path, 0, es);
- ExplainPropertyFloat("Tuples Skipped", NULL, skipped_path, 0, es);
+ if (es->format == EXPLAIN_FORMAT_TEXT && total > 0)
+ {
+ ExplainIndentText(es);
+ appendStringInfoString(es->str, "Tuples:");
+ if (insert_path > 0)
+ appendStringInfo(es->str, " inserted=%.0f", insert_path);
+ if (update_path > 0)
+ appendStringInfo(es->str, " updated=%.0f", update_path);
+ if (delete_path > 0)
+ appendStringInfo(es->str, " deleted=%.0f", delete_path);
+ if (skipped_path > 0)
+ appendStringInfo(es->str, " skipped=%.0f", skipped_path);
+ appendStringInfoChar(es->str, '\n');
+ }
+ else
+ {
+ ExplainPropertyFloat("Tuples Inserted", NULL, insert_path, 0, es);
+ ExplainPropertyFloat("Tuples Updated", NULL, update_path, 0, es);
+ ExplainPropertyFloat("Tuples Deleted", NULL, delete_path, 0, es);
+ ExplainPropertyFloat("Tuples Skipped", NULL, skipped_path, 0, es);
+ }
}
}
diff --git a/src/test/regress/expected/merge.out b/src/test/regress/expected/merge.out
index 0fd037b45a..09d11ba742 100644
--- a/src/test/regress/expected/merge.out
+++ b/src/test/regress/expected/merge.out
@@ -1329,10 +1329,7 @@ WHEN MATCHED THEN
explain_merge
----------------------------------------------------------------------
Merge on ex_mtarget t (actual rows=0 loops=1)
- Tuples Inserted: 0
- Tuples Updated: 50
- Tuples Deleted: 0
- Tuples Skipped: 0
+ Tuples: updated=50
-> Merge Join (actual rows=50 loops=1)
Merge Cond: (t.a = s.a)
-> Sort (actual rows=50 loops=1)
@@ -1343,7 +1340,7 @@ WHEN MATCHED THEN
Sort Key: s.a
Sort Method: quicksort Memory: xxx
-> Seq Scan on ex_msource s (actual rows=100 loops=1)
-(15 rows)
+(12 rows)
-- only updates to selected tuples
SELECT explain_merge('
@@ -1353,10 +1350,7 @@ WHEN MATCHED AND t.a < 10 THEN
explain_merge
----------------------------------------------------------------------
Merge on ex_mtarget t (actual rows=0 loops=1)
- Tuples Inserted: 0
- Tuples Updated: 5
- Tuples Deleted: 0
- Tuples Skipped: 45
+ Tuples: updated=5 skipped=45
-> Merge Join (actual rows=50 loops=1)
Merge Cond: (t.a = s.a)
-> Sort (actual rows=50 loops=1)
@@ -1367,7 +1361,7 @@ WHEN MATCHED AND t.a < 10 THEN
Sort Key: s.a
Sort Method: quicksort Memory: xxx
-> Seq Scan on ex_msource s (actual rows=100 loops=1)
-(15 rows)
+(12 rows)
-- updates + deletes
SELECT explain_merge('
@@ -1379,10 +1373,7 @@ WHEN MATCHED AND t.a >= 10 AND t.a <= 20 THEN
explain_merge
----------------------------------------------------------------------
Merge on ex_mtarget t (actual rows=0 loops=1)
- Tuples Inserted: 0
- Tuples Updated: 5
- Tuples Deleted: 5
- Tuples Skipped: 40
+ Tuples: updated=5 deleted=5 skipped=40
-> Merge Join (actual rows=50 loops=1)
Merge Cond: (t.a = s.a)
-> Sort (actual rows=50 loops=1)
@@ -1393,7 +1384,7 @@ WHEN MATCHED AND t.a >= 10 AND t.a <= 20 THEN
Sort Key: s.a
Sort Method: quicksort Memory: xxx
-> Seq Scan on ex_msource s (actual rows=100 loops=1)
-(15 rows)
+(12 rows)
-- only inserts
SELECT explain_merge('
@@ -1403,10 +1394,7 @@ WHEN NOT MATCHED AND s.a < 10 THEN
explain_merge
----------------------------------------------------------------------
Merge on ex_mtarget t (actual rows=0 loops=1)
- Tuples Inserted: 4
- Tuples Updated: 0
- Tuples Deleted: 0
- Tuples Skipped: 96
+ Tuples: inserted=4 skipped=96
-> Merge Left Join (actual rows=100 loops=1)
Merge Cond: (s.a = t.a)
-> Sort (actual rows=100 loops=1)
@@ -1417,7 +1405,7 @@ WHEN NOT MATCHED AND s.a < 10 THEN
Sort Key: t.a
Sort Method: quicksort Memory: xxx
-> Seq Scan on ex_mtarget t (actual rows=45 loops=1)
-(15 rows)
+(12 rows)
-- all three
SELECT explain_merge('
@@ -1431,10 +1419,7 @@ WHEN NOT MATCHED AND s.a < 20 THEN
explain_merge
----------------------------------------------------------------------
Merge on ex_mtarget t (actual rows=0 loops=1)
- Tuples Inserted: 10
- Tuples Updated: 9
- Tuples Deleted: 5
- Tuples Skipped: 76
+ Tuples: inserted=10 updated=9 deleted=5 skipped=76
-> Merge Left Join (actual rows=100 loops=1)
Merge Cond: (s.a = t.a)
-> Sort (actual rows=100 loops=1)
@@ -1445,7 +1430,7 @@ WHEN NOT MATCHED AND s.a < 20 THEN
Sort Key: t.a
Sort Method: quicksort Memory: xxx
-> Seq Scan on ex_mtarget t (actual rows=49 loops=1)
-(15 rows)
+(12 rows)
DROP TABLE ex_msource, ex_mtarget;
DROP FUNCTION explain_merge(text);