From 2d60af3bcfe4359d79801ddb2d3cfd3f3fee0d4e Mon Sep 17 00:00:00 2001 From: jian he Date: Fri, 13 Jun 2025 15:06:03 +0800 Subject: [PATCH v2 1/1] error handling for ALTER CONSTRAINT NOT VALID ALTER TABLE ... ALTER CONSTRAINT ... NOT VALID is not supported,\ so set appropriate error handling to in gram.y. discussion: https://postgr.es/m/CACJufxHSp2puxP=q8ZtUGL1F+heapnzqFBZy5ZNGUjUgwjBqTQ@mail.gmail.com --- src/backend/parser/gram.y | 9 ++++++++- src/test/regress/expected/foreign_key.out | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 46bbdcbc740..4c405c7f8dc 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -2686,7 +2686,14 @@ alter_table_cmd: c->alterDeferrability = true; if ($4 & CAS_NO_INHERIT) c->alterInheritability = true; - processCASbits($4, @4, "FOREIGN KEY", + + if ($4 & CAS_NOT_VALID) + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("ALTER TABLE ... ALTER CONSTRAINT ... NOT VALID is not supported"), + parser_errposition(@4)); + + processCASbits($4, @4, NULL, &c->deferrable, &c->initdeferred, &c->is_enforced, diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 6a8f3959345..cd5f91b08d0 100644 --- a/src/test/regress/expected/foreign_key.out +++ b/src/test/regress/expected/foreign_key.out @@ -1359,7 +1359,7 @@ LINE 1: ...e ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE INITIALLY ... ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NO INHERIT; ERROR: constraint "fktable_fk_fkey" of relation "fktable" is not a not-null constraint ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT VALID; -ERROR: FOREIGN KEY constraints cannot be marked NOT VALID +ERROR: ALTER TABLE ... ALTER CONSTRAINT ... NOT VALID is not supported LINE 1: ...ER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT VALID; ^ ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey ENFORCED NOT ENFORCED; -- 2.34.1