mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Simplify syntax for ALTER TABLE ALTER CONSTRAINT NO INHERIT
Commit d45597f72f
introduced the ability to change a not-null
constraint from NO INHERIT to INHERIT and vice versa, but we included
the SET noise word in the syntax for it. The SET turns out not to be
necessary and goes against what the SQL standard says for other ALTER
TABLE subcommands, so remove it.
This changes the way this command is processed for constraint types
other than not-null, so there are some error message changes.
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: Suraj Kharage <suraj.kharage@enterprisedb.com>
Discussion: https://postgr.es/m/202503251602.vsxaehsyaoac@alvherre.pgsql
This commit is contained in:
@ -2662,15 +2662,19 @@ alter_table_cmd:
|
||||
n->subtype = AT_AlterConstraint;
|
||||
n->def = (Node *) c;
|
||||
c->conname = $3;
|
||||
c->alterDeferrability = true;
|
||||
if ($4 & (CAS_DEFERRABLE | CAS_NOT_DEFERRABLE |
|
||||
CAS_INITIALLY_DEFERRED | CAS_INITIALLY_IMMEDIATE))
|
||||
c->alterDeferrability = true;
|
||||
if ($4 & CAS_NO_INHERIT)
|
||||
c->alterInheritability = true;
|
||||
processCASbits($4, @4, "FOREIGN KEY",
|
||||
&c->deferrable,
|
||||
&c->initdeferred,
|
||||
NULL, NULL, NULL, yyscanner);
|
||||
NULL, NULL, &c->noinherit, yyscanner);
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> ALTER CONSTRAINT SET INHERIT */
|
||||
| ALTER CONSTRAINT name SET INHERIT
|
||||
/* ALTER TABLE <name> ALTER CONSTRAINT INHERIT */
|
||||
| ALTER CONSTRAINT name INHERIT
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
ATAlterConstraint *c = makeNode(ATAlterConstraint);
|
||||
@ -2681,20 +2685,6 @@ alter_table_cmd:
|
||||
c->alterInheritability = true;
|
||||
c->noinherit = false;
|
||||
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> ALTER CONSTRAINT SET NO INHERIT */
|
||||
| ALTER CONSTRAINT name SET NO INHERIT
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
ATAlterConstraint *c = makeNode(ATAlterConstraint);
|
||||
|
||||
n->subtype = AT_AlterConstraint;
|
||||
n->def = (Node *) c;
|
||||
c->conname = $3;
|
||||
c->alterInheritability = true;
|
||||
c->noinherit = true;
|
||||
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> VALIDATE CONSTRAINT ... */
|
||||
|
Reference in New Issue
Block a user