As written, it was triggering a compilation warning for old versions of
clang, as reported by buildfarm members ayu, batfish and demoiselle.
Forcing a cast with "unsigned int" should fix the warning.
While on it, the macro is moved to pgstat.h, closer to the declaration
of IOOp, per suggestion from Tom Lane.
Reported-by: Tom Lane
Reviewed-by: Bertrand Drouvot, Tom Lane, Nazir Bilal Yavuz
Discussion: https://postgr.es/m/
1272824.
1736961543@sss.pgh.pa.us
static PgStat_PendingIO PendingIOStats;
static bool have_iostats = false;
-/*
- * Check if an IOOp is tracked in bytes. This relies on the ordering of IOOp
- * defined in pgstat.h, so make sure to update this check when changing its
- * elements.
- */
-#define pgstat_is_ioop_tracked_in_bytes(io_op) \
- ((io_op) < IOOP_NUM_TYPES && (io_op) >= IOOP_EXTEND)
-
/*
* Check that stats have not been counted for any combination of IOObject,
* IOContext, and IOOp which are not tracked for the passed-in BackendType. If
#define IOOP_NUM_TYPES (IOOP_WRITE + 1)
+#define pgstat_is_ioop_tracked_in_bytes(io_op) \
+ (((unsigned int) (io_op)) < IOOP_NUM_TYPES && \
+ ((unsigned int) (io_op)) >= IOOP_EXTEND)
+
typedef struct PgStat_BktypeIO
{
uint64 bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES];