mirror of
https://github.com/postgres/postgres.git
synced 2025-06-10 09:21:54 +03:00
There was a wild mishmash of function comment formatting in pgstat, making it hard to know what to use for any new function and hard to extend existing comments (particularly due to randomly different forms of indentation). Author: Andres Freund <andres@anarazel.de> Reviewed-By: Thomas Munro <thomas.munro@gmail.com> Discussion: https://postgr.es/m/20220329191727.mzzwbl7udhpq7pmf@alap3.anarazel.de Discussion: https://postgr.es/m/20220308205351.2xcn6k4x5yivcxyd@alap3.anarazel.de
108 lines
2.8 KiB
C
108 lines
2.8 KiB
C
/* -------------------------------------------------------------------------
|
|
*
|
|
* pgstat_replslot.c
|
|
* Implementation of replication slot statistics.
|
|
*
|
|
* This file contains the implementation of replication slot statistics. It is kept
|
|
* separate from pgstat.c to enforce the line between the statistics access /
|
|
* storage implementation and the details about individual types of
|
|
* statistics.
|
|
*
|
|
* Copyright (c) 2001-2022, PostgreSQL Global Development Group
|
|
*
|
|
* IDENTIFICATION
|
|
* src/backend/utils/activity/pgstat_replslot.c
|
|
* -------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "postgres.h"
|
|
|
|
#include "replication/slot.h"
|
|
#include "utils/builtins.h" /* for namestrcpy() */
|
|
#include "utils/pgstat_internal.h"
|
|
|
|
|
|
/*
|
|
* Tell the statistics collector to reset a single replication slot
|
|
* counter, or all replication slots counters (when name is null).
|
|
*
|
|
* Permission checking for this function is managed through the normal
|
|
* GRANT system.
|
|
*/
|
|
void
|
|
pgstat_reset_replslot_counter(const char *name)
|
|
{
|
|
PgStat_MsgResetreplslotcounter msg;
|
|
|
|
if (pgStatSock == PGINVALID_SOCKET)
|
|
return;
|
|
|
|
if (name)
|
|
{
|
|
namestrcpy(&msg.m_slotname, name);
|
|
msg.clearall = false;
|
|
}
|
|
else
|
|
msg.clearall = true;
|
|
|
|
pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_RESETREPLSLOTCOUNTER);
|
|
|
|
pgstat_send(&msg, sizeof(msg));
|
|
}
|
|
|
|
/*
|
|
* Tell the collector about replication slot statistics.
|
|
*/
|
|
void
|
|
pgstat_report_replslot(const PgStat_StatReplSlotEntry *repSlotStat)
|
|
{
|
|
PgStat_MsgReplSlot msg;
|
|
|
|
/*
|
|
* Prepare and send the message
|
|
*/
|
|
pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_REPLSLOT);
|
|
namestrcpy(&msg.m_slotname, NameStr(repSlotStat->slotname));
|
|
msg.m_create = false;
|
|
msg.m_drop = false;
|
|
msg.m_spill_txns = repSlotStat->spill_txns;
|
|
msg.m_spill_count = repSlotStat->spill_count;
|
|
msg.m_spill_bytes = repSlotStat->spill_bytes;
|
|
msg.m_stream_txns = repSlotStat->stream_txns;
|
|
msg.m_stream_count = repSlotStat->stream_count;
|
|
msg.m_stream_bytes = repSlotStat->stream_bytes;
|
|
msg.m_total_txns = repSlotStat->total_txns;
|
|
msg.m_total_bytes = repSlotStat->total_bytes;
|
|
pgstat_send(&msg, sizeof(PgStat_MsgReplSlot));
|
|
}
|
|
|
|
/*
|
|
* Tell the collector about creating the replication slot.
|
|
*/
|
|
void
|
|
pgstat_report_replslot_create(const char *slotname)
|
|
{
|
|
PgStat_MsgReplSlot msg;
|
|
|
|
pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_REPLSLOT);
|
|
namestrcpy(&msg.m_slotname, slotname);
|
|
msg.m_create = true;
|
|
msg.m_drop = false;
|
|
pgstat_send(&msg, sizeof(PgStat_MsgReplSlot));
|
|
}
|
|
|
|
/*
|
|
* Tell the collector about dropping the replication slot.
|
|
*/
|
|
void
|
|
pgstat_report_replslot_drop(const char *slotname)
|
|
{
|
|
PgStat_MsgReplSlot msg;
|
|
|
|
pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_REPLSLOT);
|
|
namestrcpy(&msg.m_slotname, slotname);
|
|
msg.m_create = false;
|
|
msg.m_drop = true;
|
|
pgstat_send(&msg, sizeof(PgStat_MsgReplSlot));
|
|
}
|