From 9553b4115f1879f66935f42fff0b798ef91866d0 Mon Sep 17 00:00:00 2001 From: Jeff Davis Date: Thu, 7 Apr 2022 00:27:07 -0700 Subject: [PATCH] Fix warning introduced in 5c279a6d350. Change two macros to be static inline functions instead to keep the data type consistent. This avoids a "comparison is always true" warning that was occurring with -Wtype-limits. In the process, change the names to look less like macros. Discussion: https://postgr.es/m/20220407063505.njnnrmbn4sxqfsts@alap3.anarazel.de --- src/backend/access/transam/rmgr.c | 4 ++-- src/backend/access/transam/xlogreader.c | 2 +- src/bin/pg_waldump/pg_waldump.c | 6 +++--- src/bin/pg_waldump/rmgrdesc.c | 4 ++-- src/include/access/rmgr.h | 18 ++++++++++++++---- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/backend/access/transam/rmgr.c b/src/backend/access/transam/rmgr.c index 3c2dc1000d..e1d6ebbd3d 100644 --- a/src/backend/access/transam/rmgr.c +++ b/src/backend/access/transam/rmgr.c @@ -101,7 +101,7 @@ RegisterCustomRmgr(RmgrId rmid, RmgrData *rmgr) ereport(ERROR, (errmsg("custom resource manager name is invalid"), errhint("Provide a non-empty name for the custom resource manager."))); - if (!RMID_IS_CUSTOM(rmid)) + if (!RmgrIdIsCustom(rmid)) ereport(ERROR, (errmsg("custom resource manager ID %d is out of range", rmid), errhint("Provide a custom resource manager ID between %d and %d.", RM_MIN_CUSTOM_ID, RM_MAX_CUSTOM_ID))); @@ -153,7 +153,7 @@ pg_get_wal_resource_managers(PG_FUNCTION_ARGS) continue; values[0] = Int32GetDatum(rmid); values[1] = CStringGetTextDatum(GetRmgr(rmid).rm_name); - values[2] = BoolGetDatum(RMID_IS_BUILTIN(rmid)); + values[2] = BoolGetDatum(RmgrIdIsBuiltin(rmid)); tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc, values, nulls); } diff --git a/src/backend/access/transam/xlogreader.c b/src/backend/access/transam/xlogreader.c index 161cf13fed..e612aa933a 100644 --- a/src/backend/access/transam/xlogreader.c +++ b/src/backend/access/transam/xlogreader.c @@ -1102,7 +1102,7 @@ ValidXLogRecordHeader(XLogReaderState *state, XLogRecPtr RecPtr, (uint32) SizeOfXLogRecord, record->xl_tot_len); return false; } - if (!RMID_IS_VALID(record->xl_rmid)) + if (!RmgrIdIsValid(record->xl_rmid)) { report_invalid_record(state, "invalid resource manager ID %u at %X/%X", diff --git a/src/bin/pg_waldump/pg_waldump.c b/src/bin/pg_waldump/pg_waldump.c index 4f47449a6c..7d92dcaf87 100644 --- a/src/bin/pg_waldump/pg_waldump.c +++ b/src/bin/pg_waldump/pg_waldump.c @@ -749,7 +749,7 @@ XLogDumpDisplayStats(XLogDumpConfig *config, XLogDumpStats *stats) tot_len; const RmgrDescData *desc; - if (!RMID_IS_VALID(ri)) + if (!RmgrIdIsValid(ri)) continue; desc = GetRmgrDesc(ri); @@ -761,7 +761,7 @@ XLogDumpDisplayStats(XLogDumpConfig *config, XLogDumpStats *stats) fpi_len = stats->rmgr_stats[ri].fpi_len; tot_len = rec_len + fpi_len; - if (RMID_IS_CUSTOM(ri) && count == 0) + if (RmgrIdIsCustom(ri) && count == 0) continue; XLogDumpStatsRow(desc->rm_name, @@ -1025,7 +1025,7 @@ main(int argc, char **argv) */ if (sscanf(optarg, "custom%03d", &rmid) == 1) { - if (!RMID_IS_CUSTOM(rmid)) + if (!RmgrIdIsCustom(rmid)) { pg_log_error("custom resource manager \"%s\" does not exist", optarg); diff --git a/src/bin/pg_waldump/rmgrdesc.c b/src/bin/pg_waldump/rmgrdesc.c index d1f92a413c..fac509ed13 100644 --- a/src/bin/pg_waldump/rmgrdesc.c +++ b/src/bin/pg_waldump/rmgrdesc.c @@ -86,9 +86,9 @@ initialize_custom_rmgrs(void) const RmgrDescData * GetRmgrDesc(RmgrId rmid) { - Assert(RMID_IS_VALID(rmid)); + Assert(RmgrIdIsValid(rmid)); - if (RMID_IS_BUILTIN(rmid)) + if (RmgrIdIsBuiltin(rmid)) return &RmgrDescTable[rmid]; else { diff --git a/src/include/access/rmgr.h b/src/include/access/rmgr.h index d9a96410d9..e465800e44 100644 --- a/src/include/access/rmgr.h +++ b/src/include/access/rmgr.h @@ -37,10 +37,20 @@ typedef enum RmgrIds #define RM_N_IDS (UINT8_MAX + 1) #define RM_N_BUILTIN_IDS (RM_MAX_BUILTIN_ID + 1) #define RM_N_CUSTOM_IDS (RM_MAX_CUSTOM_ID - RM_MIN_CUSTOM_ID + 1) -#define RMID_IS_BUILTIN(rmid) ((rmid) <= RM_MAX_BUILTIN_ID) -#define RMID_IS_CUSTOM(rmid) ((rmid) >= RM_MIN_CUSTOM_ID && \ - (rmid) <= RM_MAX_CUSTOM_ID) -#define RMID_IS_VALID(rmid) (RMID_IS_BUILTIN((rmid)) || RMID_IS_CUSTOM((rmid))) + +static inline bool +RmgrIdIsBuiltin(int rmid) +{ + return rmid <= RM_MAX_BUILTIN_ID; +} + +static inline bool +RmgrIdIsCustom(int rmid) +{ + return rmid >= RM_MIN_CUSTOM_ID && rmid <= RM_MAX_CUSTOM_ID; +} + +#define RmgrIdIsValid(rmid) (RmgrIdIsBuiltin((rmid)) || RmgrIdIsCustom((rmid))) /* * RmgrId to use for extensions that require an RmgrId, but are still in