aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/pgstatfuncs.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2011-02-17 16:03:28 -0500
committerRobert Haas <rhaas@postgresql.org>2011-02-17 16:03:28 -0500
commit4a25bc145ad5d05da6f01c00bae0f576e9e17115 (patch)
tree82f6bfe16bd3e37f205cf7ff5ded07ddb60cfd97 /src/backend/utils/adt/pgstatfuncs.c
parenta3e8486dffc413506b14eae9dc5d423f6ae8324a (diff)
downloadpostgresql-4a25bc145ad5d05da6f01c00bae0f576e9e17115.tar.gz
postgresql-4a25bc145ad5d05da6f01c00bae0f576e9e17115.zip
Add client_hostname field to pg_stat_activity.
Peter Eisentraut, reviewed by Steve Singer, Alvaro Herrera, and me.
Diffstat (limited to 'src/backend/utils/adt/pgstatfuncs.c')
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c
index f8f99615143..eb9bca19877 100644
--- a/src/backend/utils/adt/pgstatfuncs.c
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -506,7 +506,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
- tupdesc = CreateTemplateTupleDesc(11, false);
+ tupdesc = CreateTemplateTupleDesc(12, false);
TupleDescInitEntry(tupdesc, (AttrNumber) 1, "datid", OIDOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 2, "procpid", INT4OID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 3, "usesysid", OIDOID, -1, 0);
@@ -517,7 +517,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
TupleDescInitEntry(tupdesc, (AttrNumber) 8, "query_start", TIMESTAMPTZOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 9, "backend_start", TIMESTAMPTZOID, -1, 0);
TupleDescInitEntry(tupdesc, (AttrNumber) 10, "client_addr", INETOID, -1, 0);
- TupleDescInitEntry(tupdesc, (AttrNumber) 11, "client_port", INT4OID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 11, "client_hostname", TEXTOID, -1, 0);
+ TupleDescInitEntry(tupdesc, (AttrNumber) 12, "client_port", INT4OID, -1, 0);
funcctx->tuple_desc = BlessTupleDesc(tupdesc);
@@ -569,8 +570,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
if (funcctx->call_cntr < funcctx->max_calls)
{
/* for each row */
- Datum values[11];
- bool nulls[11];
+ Datum values[12];
+ bool nulls[12];
HeapTuple tuple;
PgBackendStatus *beentry;
SockAddr zero_clientaddr;
@@ -647,6 +648,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
{
nulls[9] = true;
nulls[10] = true;
+ nulls[11] = true;
}
else
{
@@ -671,13 +673,18 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
{
nulls[9] = true;
nulls[10] = true;
+ nulls[11] = true;
}
else
{
clean_ipv6_addr(beentry->st_clientaddr.addr.ss_family, remote_host);
values[9] = DirectFunctionCall1(inet_in,
CStringGetDatum(remote_host));
- values[10] = Int32GetDatum(atoi(remote_port));
+ if (beentry->st_clienthostname)
+ values[10] = CStringGetTextDatum(beentry->st_clienthostname);
+ else
+ nulls[10] = true;
+ values[11] = Int32GetDatum(atoi(remote_port));
}
}
else if (beentry->st_clientaddr.addr.ss_family == AF_UNIX)
@@ -689,13 +696,15 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
* errors.
*/
nulls[9] = true;
- values[10] = DatumGetInt32(-1);
+ nulls[10] = true;
+ values[11] = DatumGetInt32(-1);
}
else
{
/* Unknown address type, should never happen */
nulls[9] = true;
nulls[10] = true;
+ nulls[11] = true;
}
}
}
@@ -709,6 +718,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
nulls[8] = true;
nulls[9] = true;
nulls[10] = true;
+ nulls[11] = true;
}
tuple = heap_form_tuple(funcctx->tuple_desc, values, nulls);