summaryrefslogtreecommitdiff
path: root/src/test/regress
diff options
context:
space:
mode:
authorAlvaro Herrera2022-05-18 19:20:49 +0000
committerAlvaro Herrera2022-05-18 19:20:49 +0000
commit12e423e21d8ef47d95a099c12f625f6d191eaf92 (patch)
tree2eff4e84be1c22c68a3745f51bab4e16a716921c /src/test/regress
parent0fbf0112002355efb2bb525ab88edf891dbfd033 (diff)
Fix EXPLAIN MERGE output when no tuples are processed
An 'else' clause was misplaced in commit 598ac10be1c2, making zero-rows output look a bit silly. Add a test case for it. Pointed out by Tom Lane. Discussion: https://postgr.es/m/21030.1652893083@sss.pgh.pa.us
Diffstat (limited to 'src/test/regress')
-rw-r--r--src/test/regress/expected/merge.out20
-rw-r--r--src/test/regress/sql/merge.sql8
2 files changed, 26 insertions, 2 deletions
diff --git a/src/test/regress/expected/merge.out b/src/test/regress/expected/merge.out
index 09d11ba7421..af670e28e7f 100644
--- a/src/test/regress/expected/merge.out
+++ b/src/test/regress/expected/merge.out
@@ -1316,7 +1316,7 @@ BEGIN
EXECUTE 'explain (analyze, timing off, summary off, costs off) ' ||
query
LOOP
- ln := regexp_replace(ln, 'Memory: \S*', 'Memory: xxx');
+ ln := regexp_replace(ln, '(Memory( Usage)?|Buckets|Batches): \S*', '\1: xxx', 'g');
RETURN NEXT ln;
END LOOP;
END;
@@ -1432,6 +1432,24 @@ WHEN NOT MATCHED AND s.a < 20 THEN
-> Seq Scan on ex_mtarget t (actual rows=49 loops=1)
(12 rows)
+-- nothing
+SELECT explain_merge('
+MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a AND t.a < -1000
+WHEN MATCHED AND t.a < 10 THEN
+ DO NOTHING');
+ explain_merge
+--------------------------------------------------------------------
+ Merge on ex_mtarget t (actual rows=0 loops=1)
+ -> Hash Join (actual rows=0 loops=1)
+ Hash Cond: (s.a = t.a)
+ -> Seq Scan on ex_msource s (actual rows=1 loops=1)
+ -> Hash (actual rows=0 loops=1)
+ Buckets: xxx Batches: xxx Memory Usage: xxx
+ -> Seq Scan on ex_mtarget t (actual rows=0 loops=1)
+ Filter: (a < '-1000'::integer)
+ Rows Removed by Filter: 54
+(9 rows)
+
DROP TABLE ex_msource, ex_mtarget;
DROP FUNCTION explain_merge(text);
-- Subqueries
diff --git a/src/test/regress/sql/merge.sql b/src/test/regress/sql/merge.sql
index 8815e0cc498..afeb212f3c8 100644
--- a/src/test/regress/sql/merge.sql
+++ b/src/test/regress/sql/merge.sql
@@ -878,7 +878,7 @@ BEGIN
EXECUTE 'explain (analyze, timing off, summary off, costs off) ' ||
query
LOOP
- ln := regexp_replace(ln, 'Memory: \S*', 'Memory: xxx');
+ ln := regexp_replace(ln, '(Memory( Usage)?|Buckets|Batches): \S*', '\1: xxx', 'g');
RETURN NEXT ln;
END LOOP;
END;
@@ -920,6 +920,12 @@ WHEN MATCHED AND t.a >= 30 AND t.a <= 40 THEN
WHEN NOT MATCHED AND s.a < 20 THEN
INSERT VALUES (a, b)');
+-- nothing
+SELECT explain_merge('
+MERGE INTO ex_mtarget t USING ex_msource s ON t.a = s.a AND t.a < -1000
+WHEN MATCHED AND t.a < 10 THEN
+ DO NOTHING');
+
DROP TABLE ex_msource, ex_mtarget;
DROP FUNCTION explain_merge(text);