aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-05-02 17:36:31 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2024-05-02 17:36:31 -0400
commit5f4a1a0a7758bb3bd0cfa58a48a1537bb2c0024b (patch)
tree551a073a3b3bbaa75c0c94c8119918415d2a5a83
parentda55e4cd1f407d0ea70d505f7aec06c6e1dfe518 (diff)
downloadpostgresql-5f4a1a0a7758bb3bd0cfa58a48a1537bb2c0024b.tar.gz
postgresql-5f4a1a0a7758bb3bd0cfa58a48a1537bb2c0024b.zip
Throw a more on-point error for publications depending on columns.
Same as 42b041243, except that the trouble case is a publication WHERE clause that depends on a column. Again reported by Alexander Lakhin. Back-patch to v15 where we added publication WHERE clauses. Discussion: https://postgr.es/m/548a47bc-87ae-b3df-c6a2-60b9966f808b@gmail.com
-rw-r--r--src/backend/commands/tablecmds.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index d256312b63a..81dd5f4501a 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -12816,6 +12816,20 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
RememberStatisticsForRebuilding(foundObject.objectId, tab);
break;
+ case OCLASS_PUBLICATION_REL:
+
+ /*
+ * Column reference in a PUBLICATION ... FOR TABLE ... WHERE
+ * clause. Same issues as above. FIXME someday.
+ */
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot alter type of a column used by a publication WHERE clause"),
+ errdetail("%s depends on column \"%s\"",
+ getObjectDescription(&foundObject, false),
+ colName)));
+ break;
+
case OCLASS_TYPE:
case OCLASS_CAST:
case OCLASS_COLLATION:
@@ -12845,7 +12859,6 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
case OCLASS_PARAMETER_ACL:
case OCLASS_PUBLICATION:
case OCLASS_PUBLICATION_NAMESPACE:
- case OCLASS_PUBLICATION_REL:
case OCLASS_SUBSCRIPTION:
case OCLASS_TRANSFORM: