mirror of
https://github.com/postgres/postgres.git
synced 2026-10-23 13:29:09 +03:00
Skip SUBSCRIPTION TABLE TOC entries with --no-subscriptions.
pg_dump in --binary-upgrade mode emits "SUBSCRIPTION TABLE" TOC entries to preserve pg_subscription_rel state across pg_upgrade. When such a dump was restored with --no-subscriptions, _tocEntryRequired() skipped the "SUBSCRIPTION" entry but not the associated "SUBSCRIPTION TABLE" entries, so the restore would try to apply subscription-relation state for a subscription that was never created. Skip "SUBSCRIPTION TABLE" entries as well when no_subscriptions is set. This can happen when pg_subscription_rel has entries, the dump is taken with --binary-upgrade, and it is restored with --no-subscriptions. Reported-by: Hayato Kuroda <kuroda.hayato@fujitsu.com> Author: Hayato Kuroda <kuroda.hayato@fujitsu.com> Reviewed-by: Shlok Kyal <shlok.kyal.oss@gmail.com> Reviewed-by: Amit Kapila <amit.kapila16@gmail.com> Backpatch-through: 17, where it was introduced Discussion: https://postgr.es/m/OS9PR01MB121493DA4C1A7748B11A646D8F5C02@OS9PR01MB12149.jpnprd01.prod.outlook.com
This commit is contained in:
@@ -3095,7 +3095,9 @@ _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH)
|
||||
}
|
||||
|
||||
/* If it's a subscription, maybe ignore it */
|
||||
if (ropt->no_subscriptions && strcmp(te->desc, "SUBSCRIPTION") == 0)
|
||||
if (ropt->no_subscriptions &&
|
||||
(strcmp(te->desc, "SUBSCRIPTION") == 0 ||
|
||||
strcmp(te->desc, "SUBSCRIPTION TABLE") == 0))
|
||||
return 0;
|
||||
|
||||
/* Ignore it if section is not to be dumped/restored */
|
||||
|
||||
Reference in New Issue
Block a user