diff options
author | Peter Eisentraut | 2019-01-28 13:36:48 +0000 |
---|---|---|
committer | Peter Eisentraut | 2019-01-29 12:06:33 +0000 |
commit | e77cfa54d700557ea700d47454c9e570f20f1841 (patch) | |
tree | d3d4913137353b22d271761ee79d35673b46af05 /src | |
parent | 18059543e76aeb6b3cf3a5513e69daf222d3558e (diff) |
Fix pg_stat_ssl.clientdn
Return null if there is no client certificate. This is how it has
always been documented, but in reality it returned an empty string.
Reviewed-by: Kyotaro HORIGUCHI <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/[email protected]/
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 5 | ||||
-rw-r--r-- | src/test/ssl/t/001_ssltests.pl | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 053bb73863d..20ebcfbcdf6 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -652,7 +652,10 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) values[20] = CStringGetTextDatum(beentry->st_sslstatus->ssl_cipher); values[21] = Int32GetDatum(beentry->st_sslstatus->ssl_bits); values[22] = BoolGetDatum(beentry->st_sslstatus->ssl_compression); - values[23] = CStringGetTextDatum(beentry->st_sslstatus->ssl_clientdn); + if (beentry->st_sslstatus->ssl_clientdn[0]) + values[23] = CStringGetTextDatum(beentry->st_sslstatus->ssl_clientdn); + else + nulls[23] = true; } else { diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl index 74a5da578a2..bbddb8e2b76 100644 --- a/src/test/ssl/t/001_ssltests.pl +++ b/src/test/ssl/t/001_ssltests.pl @@ -316,7 +316,7 @@ command_like([ '-c', "SELECT * FROM pg_stat_ssl WHERE pid = pg_backend_pid()" ], qr{^pid,ssl,version,cipher,bits,compression,clientdn\n - ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,f,$}mx, + ^\d+,t,TLSv[\d.]+,[\w-]+,\d+,f,_null_$}mx, 'pg_stat_ssl view without client certificate'); ### Server-side tests. |