pgstatfuncs.c
来自「postgresql8.3.4源码,开源数据库」· C语言 代码 · 共 849 行 · 第 1/2 页
C
849 行
else if (*(beentry->st_activity) == '\0') activity = "<command string not enabled>"; else activity = beentry->st_activity; len = strlen(activity); result = palloc(VARHDRSZ + len); SET_VARSIZE(result, VARHDRSZ + len); memcpy(VARDATA(result), activity, len); PG_RETURN_TEXT_P(result);}Datumpg_stat_get_backend_waiting(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); bool result; PgBackendStatus *beentry; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); result = beentry->st_waiting; PG_RETURN_BOOL(result);}Datumpg_stat_get_backend_activity_start(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); TimestampTz result; PgBackendStatus *beentry; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); result = beentry->st_activity_start_timestamp; /* * No time recorded for start of current query -- this is the case if the * user hasn't enabled query-level stats collection. */ if (result == 0) PG_RETURN_NULL(); PG_RETURN_TIMESTAMPTZ(result);}Datumpg_stat_get_backend_xact_start(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); TimestampTz result; PgBackendStatus *beentry; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); result = beentry->st_xact_start_timestamp; if (result == 0) /* not in a transaction */ PG_RETURN_NULL(); PG_RETURN_TIMESTAMPTZ(result);}Datumpg_stat_get_backend_start(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); TimestampTz result; PgBackendStatus *beentry; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); result = beentry->st_proc_start_timestamp; if (result == 0) /* probably can't happen? */ PG_RETURN_NULL(); PG_RETURN_TIMESTAMPTZ(result);}Datumpg_stat_get_backend_client_addr(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); PgBackendStatus *beentry; SockAddr zero_clientaddr; char remote_host[NI_MAXHOST]; int ret; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, sizeof(zero_clientaddr) == 0)) PG_RETURN_NULL(); switch (beentry->st_clientaddr.addr.ss_family) { case AF_INET:#ifdef HAVE_IPV6 case AF_INET6:#endif break; default: PG_RETURN_NULL(); } remote_host[0] = '\0'; ret = pg_getnameinfo_all(&beentry->st_clientaddr.addr, beentry->st_clientaddr.salen, remote_host, sizeof(remote_host), NULL, 0, NI_NUMERICHOST | NI_NUMERICSERV); if (ret) PG_RETURN_NULL(); clean_ipv6_addr(beentry->st_clientaddr.addr.ss_family, remote_host); PG_RETURN_INET_P(DirectFunctionCall1(inet_in, CStringGetDatum(remote_host)));}Datumpg_stat_get_backend_client_port(PG_FUNCTION_ARGS){ int32 beid = PG_GETARG_INT32(0); PgBackendStatus *beentry; SockAddr zero_clientaddr; char remote_port[NI_MAXSERV]; int ret; if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) PG_RETURN_NULL(); if (!superuser() && beentry->st_userid != GetUserId()) PG_RETURN_NULL(); /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, sizeof(zero_clientaddr) == 0)) PG_RETURN_NULL(); switch (beentry->st_clientaddr.addr.ss_family) { case AF_INET:#ifdef HAVE_IPV6 case AF_INET6:#endif break; case AF_UNIX: PG_RETURN_INT32(-1); default: PG_RETURN_NULL(); } remote_port[0] = '\0'; ret = pg_getnameinfo_all(&beentry->st_clientaddr.addr, beentry->st_clientaddr.salen, NULL, 0, remote_port, sizeof(remote_port), NI_NUMERICHOST | NI_NUMERICSERV); if (ret) PG_RETURN_NULL(); PG_RETURN_DATUM(DirectFunctionCall1(int4in, CStringGetDatum(remote_port)));}Datumpg_stat_get_db_numbackends(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int32 result; int tot_backends = pgstat_fetch_stat_numbackends(); int beid; result = 0; for (beid = 1; beid <= tot_backends; beid++) { PgBackendStatus *beentry = pgstat_fetch_stat_beentry(beid); if (beentry && beentry->st_databaseid == dbid) result++; } PG_RETURN_INT32(result);}Datumpg_stat_get_db_xact_commit(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_xact_commit); PG_RETURN_INT64(result);}Datumpg_stat_get_db_xact_rollback(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_xact_rollback); PG_RETURN_INT64(result);}Datumpg_stat_get_db_blocks_fetched(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_blocks_fetched); PG_RETURN_INT64(result);}Datumpg_stat_get_db_blocks_hit(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_blocks_hit); PG_RETURN_INT64(result);}Datumpg_stat_get_db_tuples_returned(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_tuples_returned); PG_RETURN_INT64(result);}Datumpg_stat_get_db_tuples_fetched(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_tuples_fetched); PG_RETURN_INT64(result);}Datumpg_stat_get_db_tuples_inserted(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_tuples_inserted); PG_RETURN_INT64(result);}Datumpg_stat_get_db_tuples_updated(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_tuples_updated); PG_RETURN_INT64(result);}Datumpg_stat_get_db_tuples_deleted(PG_FUNCTION_ARGS){ Oid dbid = PG_GETARG_OID(0); int64 result; PgStat_StatDBEntry *dbentry; if ((dbentry = pgstat_fetch_stat_dbentry(dbid)) == NULL) result = 0; else result = (int64) (dbentry->n_tuples_deleted); PG_RETURN_INT64(result);}Datumpg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->timed_checkpoints);}Datumpg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->requested_checkpoints);}Datumpg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->buf_written_checkpoints);}Datumpg_stat_get_bgwriter_buf_written_clean(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->buf_written_clean);}Datumpg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->maxwritten_clean);}Datumpg_stat_get_buf_written_backend(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->buf_written_backend);}Datumpg_stat_get_buf_alloc(PG_FUNCTION_ARGS){ PG_RETURN_INT64(pgstat_fetch_global()->buf_alloc);}/* Discard the active statistics snapshot */Datumpg_stat_clear_snapshot(PG_FUNCTION_ARGS){ pgstat_clear_snapshot(); PG_RETURN_VOID();}/* Reset all counters for the current database */Datumpg_stat_reset(PG_FUNCTION_ARGS){ pgstat_reset_counters(); PG_RETURN_VOID();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?