From d780d7c0882fe9a385102b292907baaceb505ed0 Mon Sep 17 00:00:00 2001 From: Fujii Masao Date: Wed, 12 May 2021 09:56:34 +0900 Subject: Change data type of counters in BufferUsage and WalUsage from long to int64. Previously long was used as the data type for some counters in BufferUsage and WalUsage. But long is only four byte, e.g., on Windows, and it's entirely possible to wrap a four byte counter. For example, emitting more than four billion WAL records in one transaction isn't actually particularly rare. To avoid the overflows of those counters, this commit changes the data type of them from long to int64. Suggested-by: Andres Freund Author: Masahiro Ikeda Reviewed-by: Fujii Masao Discussion: https://postgr.es/m/20201221211650.k7b53tcnadrciqjo@alap3.anarazel.de Discussion: https://postgr.es/m/af0964ac-7080-1984-dc23-513754987716@oss.nttdata.com --- src/backend/commands/explain.c | 48 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src/backend/commands/explain.c') diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 8ab7bca866b..9867da83bca 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -3526,17 +3526,17 @@ show_buffer_usage(ExplainState *es, const BufferUsage *usage, bool planning) { appendStringInfoString(es->str, " shared"); if (usage->shared_blks_hit > 0) - appendStringInfo(es->str, " hit=%ld", - usage->shared_blks_hit); + appendStringInfo(es->str, " hit=%lld", + (long long) usage->shared_blks_hit); if (usage->shared_blks_read > 0) - appendStringInfo(es->str, " read=%ld", - usage->shared_blks_read); + appendStringInfo(es->str, " read=%lld", + (long long) usage->shared_blks_read); if (usage->shared_blks_dirtied > 0) - appendStringInfo(es->str, " dirtied=%ld", - usage->shared_blks_dirtied); + appendStringInfo(es->str, " dirtied=%lld", + (long long) usage->shared_blks_dirtied); if (usage->shared_blks_written > 0) - appendStringInfo(es->str, " written=%ld", - usage->shared_blks_written); + appendStringInfo(es->str, " written=%lld", + (long long) usage->shared_blks_written); if (has_local || has_temp) appendStringInfoChar(es->str, ','); } @@ -3544,17 +3544,17 @@ show_buffer_usage(ExplainState *es, const BufferUsage *usage, bool planning) { appendStringInfoString(es->str, " local"); if (usage->local_blks_hit > 0) - appendStringInfo(es->str, " hit=%ld", - usage->local_blks_hit); + appendStringInfo(es->str, " hit=%lld", + (long long) usage->local_blks_hit); if (usage->local_blks_read > 0) - appendStringInfo(es->str, " read=%ld", - usage->local_blks_read); + appendStringInfo(es->str, " read=%lld", + (long long) usage->local_blks_read); if (usage->local_blks_dirtied > 0) - appendStringInfo(es->str, " dirtied=%ld", - usage->local_blks_dirtied); + appendStringInfo(es->str, " dirtied=%lld", + (long long) usage->local_blks_dirtied); if (usage->local_blks_written > 0) - appendStringInfo(es->str, " written=%ld", - usage->local_blks_written); + appendStringInfo(es->str, " written=%lld", + (long long) usage->local_blks_written); if (has_temp) appendStringInfoChar(es->str, ','); } @@ -3562,11 +3562,11 @@ show_buffer_usage(ExplainState *es, const BufferUsage *usage, bool planning) { appendStringInfoString(es->str, " temp"); if (usage->temp_blks_read > 0) - appendStringInfo(es->str, " read=%ld", - usage->temp_blks_read); + appendStringInfo(es->str, " read=%lld", + (long long) usage->temp_blks_read); if (usage->temp_blks_written > 0) - appendStringInfo(es->str, " written=%ld", - usage->temp_blks_written); + appendStringInfo(es->str, " written=%lld", + (long long) usage->temp_blks_written); } appendStringInfoChar(es->str, '\n'); } @@ -3638,11 +3638,11 @@ show_wal_usage(ExplainState *es, const WalUsage *usage) appendStringInfoString(es->str, "WAL:"); if (usage->wal_records > 0) - appendStringInfo(es->str, " records=%ld", - usage->wal_records); + appendStringInfo(es->str, " records=%lld", + (long long) usage->wal_records); if (usage->wal_fpi > 0) - appendStringInfo(es->str, " fpi=%ld", - usage->wal_fpi); + appendStringInfo(es->str, " fpi=%lld", + (long long) usage->wal_fpi); if (usage->wal_bytes > 0) appendStringInfo(es->str, " bytes=" UINT64_FORMAT, usage->wal_bytes); -- cgit v1.2.3