diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index ec5268954f0..e71c0c62b5f 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -2596,25 +2596,8 @@ fetch_relation_list(WalReceiverConn *wrconn, List *publications) /* Build the pub_names comma-separated string. */ GetPublicationsStr(publications, pub_names, true); - /* Get the list of tables and sequences from the publisher. */ - if (server_version >= 190000) - { - tableRow[2] = INT2VECTOROID; - - appendStringInfo(&cmd, "SELECT DISTINCT n.nspname, c.relname, gpt.attrs\n" - " FROM pg_class c\n" - " JOIN pg_namespace n ON n.oid = c.relnamespace\n" - " JOIN ( SELECT (pg_get_publication_tables(VARIADIC array_agg(pubname::text))).*\n" - " FROM pg_publication\n" - " WHERE pubname IN (%s)) AS gpt\n" - " ON gpt.relid = c.oid\n" - " UNION ALL\n" - " SELECT DISTINCT s.schemaname, s.sequencename, NULL::int2vector AS attrs\n" - " FROM pg_catalog.pg_publication_sequences s\n" - " WHERE s.pubname IN (%s)", - pub_names->data, pub_names->data); - } - else if (server_version >= 160000) + /* Get the list of relations from the publisher */ + if (server_version >= 160000) { tableRow[2] = INT2VECTOROID; @@ -2639,6 +2622,19 @@ fetch_relation_list(WalReceiverConn *wrconn, List *publications) " WHERE pubname IN ( %s )) AS gpt\n" " ON gpt.relid = c.oid\n", pub_names->data); + + if (server_version >= 190000) + { + /* + * From version 19, we allowed to include sequences in the target. + */ + appendStringInfo(&cmd, + "UNION ALL\n" + " SELECT DISTINCT s.schemaname, s.sequencename, NULL::int2vector AS attrs\n" + " FROM pg_catalog.pg_publication_sequences s\n" + " WHERE s.pubname IN (%s)", + pub_names->data); + } } else {