aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/parse_merge.c6
-rw-r--r--src/test/regress/expected/merge.out2
-rw-r--r--src/test/regress/sql/merge.sql2
3 files changed, 5 insertions, 5 deletions
diff --git a/src/backend/parser/parse_merge.c b/src/backend/parser/parse_merge.c
index 62c2ff69f0c..e8865bfaf54 100644
--- a/src/backend/parser/parse_merge.c
+++ b/src/backend/parser/parse_merge.c
@@ -155,12 +155,12 @@ transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
/*
* Check for unreachable WHEN clauses
*/
- if (mergeWhenClause->condition == NULL)
- is_terminal[when_type] = true;
- else if (is_terminal[when_type])
+ if (is_terminal[when_type])
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("unreachable WHEN clause specified after unconditional WHEN clause")));
+ if (mergeWhenClause->condition == NULL)
+ is_terminal[when_type] = true;
}
/*
diff --git a/src/test/regress/expected/merge.out b/src/test/regress/expected/merge.out
index 958fb85305c..21a82eefbcd 100644
--- a/src/test/regress/expected/merge.out
+++ b/src/test/regress/expected/merge.out
@@ -659,7 +659,7 @@ USING source AS s
ON t.tid = s.sid
WHEN MATCHED THEN /* Terminal WHEN clause for MATCHED */
DELETE
-WHEN MATCHED AND s.delta > 0 THEN
+WHEN MATCHED THEN
UPDATE SET balance = t.balance - s.delta;
ERROR: unreachable WHEN clause specified after unconditional WHEN clause
ROLLBACK;
diff --git a/src/test/regress/sql/merge.sql b/src/test/regress/sql/merge.sql
index 98fe1040bd4..fdbcd708823 100644
--- a/src/test/regress/sql/merge.sql
+++ b/src/test/regress/sql/merge.sql
@@ -438,7 +438,7 @@ USING source AS s
ON t.tid = s.sid
WHEN MATCHED THEN /* Terminal WHEN clause for MATCHED */
DELETE
-WHEN MATCHED AND s.delta > 0 THEN
+WHEN MATCHED THEN
UPDATE SET balance = t.balance - s.delta;
ROLLBACK;