aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_merge.c
diff options
context:
space:
mode:
authorDean Rasheed <dean.a.rasheed@gmail.com>2023-01-10 14:17:47 +0000
committerDean Rasheed <dean.a.rasheed@gmail.com>2023-01-10 14:17:47 +0000
commitf026c16a2c5a3ee5d7aa6f85333ec80c905913ba (patch)
tree4bc010d468cee93ccae63304a915a6c4fb2066f4 /src/backend/parser/parse_merge.c
parentd952373a987bad331c0e499463159dd142ced1ef (diff)
downloadpostgresql-f026c16a2c5a3ee5d7aa6f85333ec80c905913ba.tar.gz
postgresql-f026c16a2c5a3ee5d7aa6f85333ec80c905913ba.zip
Fix MERGE's test for unreachable WHEN clauses.
The former code would only detect an unreachable WHEN clause if it had an AND condition. Fix, so that unreachable unconditional WHEN clauses are also detected. Back-patch to v15, where MERGE was added. Discussion: https://postgr.es/m/CAEZATCVQ=7E2z4cSBB49jjeGGsB6WeoYQY32NDeSvcHiLUZ=ow@mail.gmail.com
Diffstat (limited to 'src/backend/parser/parse_merge.c')
-rw-r--r--src/backend/parser/parse_merge.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/parser/parse_merge.c b/src/backend/parser/parse_merge.c
index 611dfce1d6b..d8866373b8f 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;
}
/*