mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Fix bogus grammar for a CREATE CONSTRAINT TRIGGER error
If certain constraint characteristic clauses (NO INHERIT, NOT VALID, NOT ENFORCED) are given to CREATE CONSTRAINT TRIGGER, the resulting error message is ERROR: TRIGGER constraints cannot be marked NO INHERIT which is a bit silly, because these aren't "constraints of type TRIGGER". Hardcode a better error message to prevent it. This is a cosmetic fix for quite a fringe problem with no known complaints from users, so no backpatch. While at it, silently accept ENFORCED if given. Author: Amul Sul <sulamul@gmail.com> Reviewed-by: jian he <jian.universality@gmail.com> Reviewed-by: Fujii Masao <masao.fujii@oss.nttdata.com> Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de> Discussion: https://postgr.es/m/CAAJ_b97hd-jMTS7AjgU6TDBCzDx_KyuKxG+K-DtYmOieg+giyQ@mail.gmail.com Discussion: https://postgr.es/m/CACJufxHSp2puxP=q8ZtUGL1F+heapnzqFBZy5ZNGUjUgwjBqTQ@mail.gmail.com
This commit is contained in:
@@ -6041,6 +6041,26 @@ CreateTrigStmt:
|
||||
EXECUTE FUNCTION_or_PROCEDURE func_name '(' TriggerFuncArgs ')'
|
||||
{
|
||||
CreateTrigStmt *n = makeNode(CreateTrigStmt);
|
||||
bool dummy;
|
||||
|
||||
if (($11 & CAS_NOT_VALID) != 0)
|
||||
ereport(ERROR,
|
||||
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("constraint triggers cannot be marked %s",
|
||||
"NOT VALID"),
|
||||
parser_errposition(@11));
|
||||
if (($11 & CAS_NO_INHERIT) != 0)
|
||||
ereport(ERROR,
|
||||
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("constraint triggers cannot be marked %s",
|
||||
"NO INHERIT"),
|
||||
parser_errposition(@11));
|
||||
if (($11 & CAS_NOT_ENFORCED) != 0)
|
||||
ereport(ERROR,
|
||||
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("constraint triggers cannot be marked %s",
|
||||
"NOT ENFORCED"),
|
||||
parser_errposition(@11));
|
||||
|
||||
n->replace = $2;
|
||||
if (n->replace) /* not supported, see CreateTrigger */
|
||||
@@ -6060,7 +6080,7 @@ CreateTrigStmt:
|
||||
n->whenClause = $15;
|
||||
n->transitionRels = NIL;
|
||||
processCASbits($11, @11, "TRIGGER",
|
||||
&n->deferrable, &n->initdeferred, NULL,
|
||||
&n->deferrable, &n->initdeferred, &dummy,
|
||||
NULL, NULL, yyscanner);
|
||||
n->constrrel = $10;
|
||||
$$ = (Node *) n;
|
||||
|
||||
Reference in New Issue
Block a user