aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorÁlvaro Herrera <alvherre@alvh.no-ip.org>2025-03-27 09:24:52 +0100
committerÁlvaro Herrera <alvherre@alvh.no-ip.org>2025-03-27 09:24:52 +0100
commit4a02af8b1a5f3f8221c7381bc4de08a3d830f682 (patch)
tree3d0b6fbd5e0e582495a3f4584b86498705c49c20 /src/backend/parser
parent72c2f36d572763201430a35414138c1b9ec3a106 (diff)
downloadpostgresql-4a02af8b1a5f3f8221c7381bc4de08a3d830f682.tar.gz
postgresql-4a02af8b1a5f3f8221c7381bc4de08a3d830f682.zip
Simplify syntax for ALTER TABLE ALTER CONSTRAINT NO INHERIT
Commit d45597f72fe5 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
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y26
1 files changed, 8 insertions, 18 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 271ae26cbaf..0fc502a3a40 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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);
@@ -2683,20 +2687,6 @@ alter_table_cmd:
$$ = (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 ... */
| VALIDATE CONSTRAINT name
{