From 072fcc83a92a16982fb93957dbd6ba807f1de5e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Herrera?= <alvherre@kurilemu.de>
Date: Mon, 30 Jun 2025 20:15:17 +0200
Subject: [PATCH v5 3/3] fix grammar

---
 src/backend/parser/gram.y              | 16 ++++++++++++++++
 src/test/regress/expected/triggers.out |  6 +++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 527c7ea75e3..f66fbd20a4d 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -6040,6 +6040,22 @@ CreateTrigStmt:
 				{
 					CreateTrigStmt *n = makeNode(CreateTrigStmt);
 
+					if (($11 & CAS_NOT_VALID) != 0)
+						ereport(ERROR,
+								errmsg("constraint triggers cannot be marked %s",
+									   "NOT VALID"),
+								parser_errposition(@11));
+					if (($11 & CAS_NO_INHERIT) != 0)
+						ereport(ERROR,
+								errmsg("constraint triggers cannot be marked %s",
+									   "NO INHERIT"),
+								parser_errposition(@11));
+					if (($11 & CAS_NOT_ENFORCED) != 0)
+						ereport(ERROR,
+								errmsg("constraint triggers cannot be marked %s",
+									   "NOT ENFORCED"),
+								parser_errposition(@11));
+
 					n->replace = $2;
 					if (n->replace) /* not supported, see CreateTrigger */
 						ereport(ERROR,
diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out
index 626fabf41be..69c8dbf0084 100644
--- a/src/test/regress/expected/triggers.out
+++ b/src/test/regress/expected/triggers.out
@@ -2285,19 +2285,19 @@ drop function parted_trigfunc();
 create constraint trigger crtr
   after insert on foo not valid
   for each row execute procedure foo ();
-ERROR:  TRIGGER constraints cannot be marked NOT VALID
+ERROR:  constraint triggers cannot be marked NOT VALID
 LINE 2:   after insert on foo not valid
                               ^
 create constraint trigger crtr
   after insert on foo no inherit
   for each row execute procedure foo ();
-ERROR:  TRIGGER constraints cannot be marked NO INHERIT
+ERROR:  constraint triggers cannot be marked NO INHERIT
 LINE 2:   after insert on foo no inherit
                               ^
 create constraint trigger crtr
   after insert on foo not enforced
   for each row execute procedure foo ();
-ERROR:  TRIGGER constraints cannot be marked NOT ENFORCED
+ERROR:  constraint triggers cannot be marked NOT ENFORCED
 LINE 2:   after insert on foo not enforced
                               ^
 --
-- 
2.39.5

