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
commit91e7115b177b0523f9757574b8a329ebe10c0af7 (patch)
tree1c8c27c73a678f5654a0bd786cdcbf4c636754ef
parentd45597f72fe53a53f6271d5ba4e7acf8fc9308a1 (diff)
downloadpostgresql-91e7115b177b0523f9757574b8a329ebe10c0af7.tar.gz
postgresql-91e7115b177b0523f9757574b8a329ebe10c0af7.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.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index c31783373f0..3309332f1ae 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -46,6 +46,7 @@
#include "catalog/pg_opclass.h"
#include "catalog/pg_policy.h"
#include "catalog/pg_proc.h"
+#include "catalog/pg_publication_rel.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_statistic_ext.h"
#include "catalog/pg_tablespace.h"
@@ -14227,6 +14228,21 @@ RememberAllDependentForRebuilding(AlteredTableInfo *tab, AlterTableType subtype,
RememberStatisticsForRebuilding(foundObject.objectId, tab);
break;
+ case PublicationRelRelationId:
+
+ /*
+ * Column reference in a PUBLICATION ... FOR TABLE ... WHERE
+ * clause. Same issues as above. FIXME someday.
+ */
+ if (subtype == AT_AlterColumnType)
+ 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;
+
default:
/*