From f36c484e8e76879dbe3d51c318d30d9646da4602 Mon Sep 17 00:00:00 2001 From: Peter Smith Date: Mon, 29 Jul 2024 11:45:51 +1000 Subject: [PATCH v1] fix-new-collist-validation-msg --- src/backend/catalog/pg_publication.c | 5 +---- src/backend/commands/publicationcmds.c | 6 ++++++ src/include/catalog/pg_publication.h | 2 ++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c index 0602398..1d45572 100644 --- a/src/backend/catalog/pg_publication.c +++ b/src/backend/catalog/pg_publication.c @@ -48,9 +48,6 @@ typedef struct * table. */ } published_rel; -static void publication_translate_columns(Relation targetrel, List *columns, - int *natts, AttrNumber **attrs); - /* * Check if relation can be in given publication and throws appropriate * error if not. @@ -498,7 +495,7 @@ compare_int16(const void *a, const void *b) * FirstLowInvalidHeapAttributeNumber; system columns are forbidden so this * is okay. */ -static void +void publication_translate_columns(Relation targetrel, List *columns, int *natts, AttrNumber **attrs) { diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index 6ea7099..16a6766 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -1181,8 +1181,14 @@ AlterPublicationTables(AlterPublicationStmt *stmt, HeapTuple tup, */ if (newpubrel->columns) { + AttrNumber *attarray = NULL; + int natts = 0; ListCell *lc; + /* Do pre-validation of the new columns. */ + publication_translate_columns(newpubrel->relation, newpubrel->columns, + &natts, &attarray); + foreach(lc, newpubrel->columns) { char *colname = strVal(lfirst(lc)); diff --git a/src/include/catalog/pg_publication.h b/src/include/catalog/pg_publication.h index 2f1b6ab..596f2cc 100644 --- a/src/include/catalog/pg_publication.h +++ b/src/include/catalog/pg_publication.h @@ -157,5 +157,7 @@ extern ObjectAddress publication_add_schema(Oid pubid, Oid schemaid, extern Bitmapset *pub_collist_to_bitmapset(Bitmapset *columns, Datum pubcols, MemoryContext mcxt); +extern void publication_translate_columns(Relation targetrel, List *columns, + int *natts, AttrNumber **attrs); #endif /* PG_PUBLICATION_H */ -- 1.8.3.1