diff options
author | Magnus Hagander <magnus@hagander.net> | 2012-01-26 15:58:19 +0100 |
---|---|---|
committer | Magnus Hagander <magnus@hagander.net> | 2012-01-26 15:58:19 +0100 |
commit | 61cb8c5abb9235c3106af6c6a6e60d94cb1eee80 (patch) | |
tree | a15bff3458b883beee010a9cc111e2c3b63bbf51 /src/backend/utils/adt/pgstatfuncs.c | |
parent | 0e549697d1c6b8eeb623c497dc38a5aed4deea1e (diff) | |
download | postgresql-61cb8c5abb9235c3106af6c6a6e60d94cb1eee80.tar.gz postgresql-61cb8c5abb9235c3106af6c6a6e60d94cb1eee80.zip |
Add deadlock counter to pg_stat_database
Adds a counter that tracks number of deadlocks that occurred in
each database to pg_stat_database.
Magnus Hagander, reviewed by Jaime Casanova
Diffstat (limited to 'src/backend/utils/adt/pgstatfuncs.c')
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index c7b91a8c825..68b25274e38 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -78,6 +78,7 @@ extern Datum pg_stat_get_db_conflict_snapshot(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_bufferpin(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_startup_deadlock(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_conflict_all(PG_FUNCTION_ARGS); +extern Datum pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_stat_reset_time(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_files(PG_FUNCTION_ARGS); extern Datum pg_stat_get_db_temp_bytes(PG_FUNCTION_ARGS); @@ -1342,6 +1343,21 @@ pg_stat_get_db_conflict_all(PG_FUNCTION_ARGS) } Datum +pg_stat_get_db_deadlocks(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_deadlocks); + + PG_RETURN_INT64(result); +} + +Datum pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS) { PG_RETURN_INT64(pgstat_fetch_global()->timed_checkpoints); |