Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 96bdb7e

Browse files
committed
Fix pgstat_report_replslot() to use proper data types for its arguments.
The caller of pgstat_report_replslot() passes int64 values to the function. Also the function stores those values in PgStat_Counter (i.e., int64) fields of PgStat_MsgReplSlot struct. But previously the function used "int" as the data types of some arguments for those values, which could lead to the overflow of values. To avoid this risk, this commit fixes pgstat_report_replslot() to use PgStat_Counter type for the arguments. Since they are the statistics counters, PgStat_Counter, the data type used for counters, is used for them instead of int64. Reported-by: Vignesh C Author: Vignesh C Reviewed-by: Jeevan Ladhe, Fujii Masao Discussion: https://postgr.es/m/CALDaNm080OpG=ZwOb0i8EyChH5SyHAMFWJCKaKTXmrfvJLbgaA@mail.gmail.com
1 parent 6fb66c2 commit 96bdb7e

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/backend/postmaster/pgstat.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1773,8 +1773,10 @@ pgstat_report_tempfile(size_t filesize)
17731773
* ----------
17741774
*/
17751775
void
1776-
pgstat_report_replslot(const char *slotname, int spilltxns, int spillcount,
1777-
int spillbytes, int streamtxns, int streamcount, int streambytes)
1776+
pgstat_report_replslot(const char *slotname, PgStat_Counter spilltxns,
1777+
PgStat_Counter spillcount, PgStat_Counter spillbytes,
1778+
PgStat_Counter streamtxns, PgStat_Counter streamcount,
1779+
PgStat_Counter streambytes)
17781780
{
17791781
PgStat_MsgReplSlot msg;
17801782

src/include/pgstat.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,8 +1450,10 @@ extern void pgstat_report_recovery_conflict(int reason);
14501450
extern void pgstat_report_deadlock(void);
14511451
extern void pgstat_report_checksum_failures_in_db(Oid dboid, int failurecount);
14521452
extern void pgstat_report_checksum_failure(void);
1453-
extern void pgstat_report_replslot(const char *slotname, int spilltxns, int spillcount,
1454-
int spillbytes, int streamtxns, int streamcount, int streambytes);
1453+
extern void pgstat_report_replslot(const char *slotname, PgStat_Counter spilltxns,
1454+
PgStat_Counter spillcount, PgStat_Counter spillbytes,
1455+
PgStat_Counter streamtxns, PgStat_Counter streamcount,
1456+
PgStat_Counter streambytes);
14551457
extern void pgstat_report_replslot_drop(const char *slotname);
14561458

14571459
extern void pgstat_initialize(void);

0 commit comments

Comments
 (0)