From d2a2808eb444986d2fe716a48e21993329142f3d Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 11 Dec 2020 19:15:30 +0100 Subject: [PATCH] pg_dump: Don't use enums for defining bit mask values This usage would mean that values of the enum type are potentially not one of the enum values. Use macros instead, like everywhere else. Discussion: https://www.postgresql.org/message-id/14dde730-1d34-260e-fa9d-7664df2d6313@enterprisedb.com --- src/bin/pg_dump/pg_backup_archiver.c | 10 +++++----- src/bin/pg_dump/pg_backup_archiver.h | 13 +++++-------- src/bin/pg_dump/pg_backup_utils.h | 12 +++++------- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index b961a24b36..1f82c6499b 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -86,7 +86,7 @@ static void _selectTableAccessMethod(ArchiveHandle *AH, const char *tableam); static void processEncodingEntry(ArchiveHandle *AH, TocEntry *te); static void processStdStringsEntry(ArchiveHandle *AH, TocEntry *te); static void processSearchPathEntry(ArchiveHandle *AH, TocEntry *te); -static teReqs _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH); +static int _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH); static RestorePass _tocEntryRestorePass(TocEntry *te); static bool _tocEntryIsACL(TocEntry *te); static void _disableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te); @@ -757,7 +757,7 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel) { RestoreOptions *ropt = AH->public.ropt; int status = WORKER_OK; - teReqs reqs; + int reqs; bool defnDumped; AH->currentTE = te; @@ -1868,7 +1868,7 @@ getTocEntryByDumpId(ArchiveHandle *AH, DumpId id) return NULL; } -teReqs +int TocIDRequired(ArchiveHandle *AH, DumpId id) { TocEntry *te = getTocEntryByDumpId(AH, id); @@ -2803,10 +2803,10 @@ StrictNamesCheck(RestoreOptions *ropt) * REQ_SCHEMA and REQ_DATA bits if we want to restore schema and/or data * portions of this TOC entry, or REQ_SPECIAL if it's a special entry. */ -static teReqs +static int _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH) { - teReqs res = REQ_SCHEMA | REQ_DATA; + int res = REQ_SCHEMA | REQ_DATA; RestoreOptions *ropt = AH->public.ropt; /* These items are treated specially */ diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h index fb8d226d48..177360ed6e 100644 --- a/src/bin/pg_dump/pg_backup_archiver.h +++ b/src/bin/pg_dump/pg_backup_archiver.h @@ -229,12 +229,9 @@ typedef enum #define RESTORE_PASS_LAST RESTORE_PASS_POST_ACL } RestorePass; -typedef enum -{ - REQ_SCHEMA = 0x01, /* want schema */ - REQ_DATA = 0x02, /* want data */ - REQ_SPECIAL = 0x04 /* for special TOC entries */ -} teReqs; +#define REQ_SCHEMA 0x01 /* want schema */ +#define REQ_DATA 0x02 /* want data */ +#define REQ_SPECIAL 0x04 /* for special TOC entries */ struct _archiveHandle { @@ -386,7 +383,7 @@ struct _tocEntry /* working state while dumping/restoring */ pgoff_t dataLength; /* item's data size; 0 if none or unknown */ - teReqs reqs; /* do we need schema and/or data of object */ + int reqs; /* do we need schema and/or data of object (REQ_* bit mask) */ bool created; /* set for DATA member if TABLE was created */ /* working state (needed only for parallel restore) */ @@ -436,7 +433,7 @@ extern void WriteDataChunksForTocEntry(ArchiveHandle *AH, TocEntry *te); extern ArchiveHandle *CloneArchive(ArchiveHandle *AH); extern void DeCloneArchive(ArchiveHandle *AH); -extern teReqs TocIDRequired(ArchiveHandle *AH, DumpId id); +extern int TocIDRequired(ArchiveHandle *AH, DumpId id); TocEntry *getTocEntryByDumpId(ArchiveHandle *AH, DumpId id); extern bool checkSeek(FILE *fp); diff --git a/src/bin/pg_dump/pg_backup_utils.h b/src/bin/pg_dump/pg_backup_utils.h index ca51e25966..2bea167a69 100644 --- a/src/bin/pg_dump/pg_backup_utils.h +++ b/src/bin/pg_dump/pg_backup_utils.h @@ -17,13 +17,11 @@ #include "common/logging.h" -typedef enum /* bits returned by set_dump_section */ -{ - DUMP_PRE_DATA = 0x01, - DUMP_DATA = 0x02, - DUMP_POST_DATA = 0x04, - DUMP_UNSECTIONED = 0xff -} DumpSections; +/* bits returned by set_dump_section */ +#define DUMP_PRE_DATA 0x01 +#define DUMP_DATA 0x02 +#define DUMP_POST_DATA 0x04 +#define DUMP_UNSECTIONED 0xff typedef void (*on_exit_nicely_callback) (int code, void *arg);