38 #define NumBackendStatSlots (MaxBackends + NUM_AUXPROCTYPES)
204 MemSet(BackendSslStatusBuffer, 0, size);
207 ptr = BackendSslStatusBuffer;
226 MemSet(BackendGssStatusBuffer, 0, size);
229 ptr = BackendGssStatusBuffer;
323 memset(&lsslstatus, 0,
sizeof(lsslstatus));
326 memset(&lgssstatus, 0,
sizeof(lgssstatus));
505 "Backend Status Snapshot",
529 TRACE_POSTGRESQL_STATEMENT_STATUS(cmd_str);
734 *localclienthostname,
760 localappname = (
char *)
763 localclienthostname = (
char *)
766 localactivity = (
char *)
783 localentry = localtable;
795 int before_changecount;
796 int after_changecount;
814 strcpy(localappname, (
char *) beentry->
st_appname);
926 int before_changecount;
927 int after_changecount;
947 return "<insufficient privilege>";
949 return "<command string not enabled>";
961 return "<backend information not available>";
1001 const char *activity_last;
1013 activity > activity_last)
1017 if (activity[0] ==
'\0')
1101 key.backend_id = beid;
1181 rawlen = strlen(activity);
void ascii_safe_strlcpy(char *dest, const char *src, size_t destsiz)
AuxProcType MyAuxProcType
void TimestampDifference(TimestampTz start_time, TimestampTz stop_time, long *secs, int *microsecs)
TimestampTz GetCurrentTimestamp(void)
@ PROGRESS_COMMAND_INVALID
#define NumBackendStatSlots
int pgstat_fetch_stat_numbackends(void)
PgBackendStatus * MyBEEntry
uint64 pgstat_get_my_query_id(void)
void pgstat_clear_backend_activity_snapshot(void)
static LocalPgBackendStatus * localBackendStatusTable
static int localNumBackends
static void pgstat_beshutdown_hook(int code, Datum arg)
const char * pgstat_get_backend_current_activity(int pid, bool checkUser)
static char * BackendClientHostnameBuffer
static int cmp_lbestatus(const void *a, const void *b)
bool pgstat_track_activities
static MemoryContext backendStatusSnapContext
void CreateSharedBackendStatus(void)
static char * BackendActivityBuffer
LocalPgBackendStatus * pgstat_fetch_stat_local_beentry(int beid)
static void pgstat_setup_backend_status_context(void)
void pgstat_report_query_id(uint64 query_id, bool force)
static char * BackendAppnameBuffer
PgBackendStatus * pgstat_fetch_stat_beentry(BackendId beid)
void pgstat_report_activity(BackendState state, const char *cmd_str)
void pgstat_report_xact_timestamp(TimestampTz tstamp)
const char * pgstat_get_crashed_backend_activity(int pid, char *buffer, int buflen)
static PgBackendStatus * BackendStatusArray
Size BackendStatusShmemSize(void)
void pgstat_report_appname(const char *appname)
static Size BackendActivityBufferSize
static void pgstat_read_current_status(void)
int pgstat_track_activity_query_size
void pgstat_bestart(void)
char * pgstat_clip_activity(const char *raw_activity)
@ STATE_IDLEINTRANSACTION_ABORTED
@ STATE_IDLEINTRANSACTION
#define pgstat_read_activity_complete(before_changecount, after_changecount)
#define PGSTAT_END_WRITE_ACTIVITY(beentry)
#define PGSTAT_BEGIN_WRITE_ACTIVITY(beentry)
#define pgstat_end_read_activity(beentry, after_changecount)
#define pgstat_begin_read_activity(beentry, before_changecount)
bool be_gssapi_get_auth(Port *port)
bool be_gssapi_get_enc(Port *port)
const char * be_gssapi_get_princ(Port *port)
bool be_gssapi_get_delegation(Port *port)
const char * be_tls_get_version(Port *port)
int be_tls_get_cipher_bits(Port *port)
void be_tls_get_peer_serial(Port *port, char *ptr, size_t len)
void be_tls_get_peer_issuer_name(Port *port, char *ptr, size_t len)
const char * be_tls_get_cipher(Port *port)
void be_tls_get_peer_subject_name(Port *port, char *ptr, size_t len)
#define unvolatize(underlying_type, expr)
#define MemSet(start, val, len)
TimestampTz MyStartTimestamp
void on_shmem_exit(pg_on_exit_callback function, Datum arg)
Assert(fmt[strlen(fmt) - 1] !='\n')
int pg_mbcliplen(const char *mbstr, int len, int limit)
static int cliplen(const char *str, int len, int limit)
char * pnstrdup(const char *in, Size len)
MemoryContext TopMemoryContext
void * MemoryContextAlloc(MemoryContext context, Size size)
void * MemoryContextAllocHuge(MemoryContext context, Size size)
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_SMALL_SIZES
#define CHECK_FOR_INTERRUPTS()
Oid GetSessionUserId(void)
BackendType MyBackendType
#define pgstat_count_conn_txn_idle_time(n)
#define pgstat_count_conn_active_time(n)
size_t strlcpy(char *dst, const char *src, size_t siz)
Size add_size(Size s1, Size s2)
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
Size mul_size(Size s1, Size s2)
void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin, int *nsubxid, bool *overflowed)
TransactionId backend_xid
PgBackendStatus backendStatus
int backend_subxact_count
TransactionId backend_xmin
bool backend_subxact_overflowed
char gss_princ[NAMEDATALEN]
char ssl_version[NAMEDATALEN]
char ssl_cipher[NAMEDATALEN]
char ssl_client_dn[NAMEDATALEN]
char ssl_client_serial[NAMEDATALEN]
char ssl_issuer_dn[NAMEDATALEN]
BackendType st_backendType
TimestampTz st_state_start_timestamp
TimestampTz st_proc_start_timestamp
PgBackendGSSStatus * st_gssstatus
TimestampTz st_activity_start_timestamp
ProgressCommandType st_progress_command
PgBackendSSLStatus * st_sslstatus
TimestampTz st_xact_start_timestamp
Oid st_progress_command_target
TimestampTz GetCurrentStatementStartTimestamp(void)