diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-05-07 18:22:52 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-05-07 18:23:01 -0400 |
commit | 5dce8ce0ac48bc8af33d7efcdbfee713781598ed (patch) | |
tree | 0b9852e5f25669a64a0b44de9d73185a76221b21 | |
parent | be18a12b663181f304d49022a452e31e4df42ff2 (diff) | |
download | postgresql-REL_16_STABLE.tar.gz postgresql-REL_16_STABLE.zip |
Ensure that "pg_restore -l" reports dependent TOC entries correctly.REL_16_STABLE
If -l was specified together with selective-restore options such as -n
or -N, dependent TOC entries such as comments would be omitted from
the listing, even when an actual restore would have selected them.
This happened because PrintTOCSummary neglected to update the te->reqs
marking of the entry they depended on.
Per report from Justin Pryzby. This has been wrong since 0d4e6ed30
taught _tocEntryRequired to sometimes look at the "reqs" marking of
other TOC entries, so back-patch to all supported branches.
Discussion: https://postgr.es/m/ZjoeirG7yxODdC4P@pryzbyj2023
-rw-r--r-- | src/bin/pg_dump/pg_backup_archiver.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index ab351e457e0..958f88d4201 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -1230,10 +1230,13 @@ PrintTOCSummary(Archive *AHX) curSection = SECTION_PRE_DATA; for (te = AH->toc->next; te != AH->toc; te = te->next) { + /* This bit must match ProcessArchiveRestoreOptions' marking logic */ if (te->section != SECTION_NONE) curSection = te->section; + te->reqs = _tocEntryRequired(te, curSection, AH); + /* Now, should we print it? */ if (ropt->verbose || - (_tocEntryRequired(te, curSection, AH) & (REQ_SCHEMA | REQ_DATA)) != 0) + (te->reqs & (REQ_SCHEMA | REQ_DATA)) != 0) { char *sanitized_name; char *sanitized_schema; |