diff --git a/src/backend/distributed/utils/citus_stat_tenants.c b/src/backend/distributed/utils/citus_stat_tenants.c index 5dd9f5593..926146139 100644 --- a/src/backend/distributed/utils/citus_stat_tenants.c +++ b/src/backend/distributed/utils/citus_stat_tenants.c @@ -50,7 +50,7 @@ ExecutorEnd_hook_type prev_ExecutorEnd = NULL; #define ONE_QUERY_SCORE 1000000000 #define BYTE_TO_BIT 3 /* 2^3 bits/byte */ #define TENANTS_STATS_FIELD_BIT_LENGTH(tenantStats, field) (sizeof((tenantStats)->field) \ - << BYTE_TO_BIT) + << BYTE_TO_BIT) static char AttributeToTenant[MAX_TENANT_ATTRIBUTE_LENGTH] = ""; static CmdType AttributeToCommandType = CMD_UNKNOWN; @@ -609,6 +609,7 @@ ReduceScoreIfNecessary(TenantStats *tenantStats, TimestampTz queryTime) if (periodCountAfterLastScoreReduction > 0) { tenantStats->lastScoreReduction = queryTime; + /*addtional check to avoid undefined behavior */ tenantStats->score = (periodCountAfterLastScoreReduction < TENANTS_STATS_FIELD_BIT_LENGTH(tenantStats, score))