From 7364a2b096b118a7448a13c281e07f886f3a08df Mon Sep 17 00:00:00 2001 From: Denis Laxalde Date: Fri, 26 Mar 2021 09:44:34 +0100 Subject: [PATCH] Handle 'pg_stat_activity.datname' column possibly being NULL --- pgactivity/types.py | 4 ++-- pgactivity/utils.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pgactivity/types.py b/pgactivity/types.py index 5394e2bc..22643996 100644 --- a/pgactivity/types.py +++ b/pgactivity/types.py @@ -303,7 +303,7 @@ def add_column(key: str, **kwargs: Any) -> None: name="DATABASE", template_h=f"%-{max_db_length}s ", transform=functools.lru_cache()( - functools.partial(utils.ellipsis, width=16) + lambda v: utils.ellipsis(v, width=16) if v else "", ), sort_key=None, ) @@ -683,7 +683,7 @@ def locktype(value: str) -> LockType: class BaseProcess: pid: int application_name: str - database: str + database: Optional[str] user: str client: str duration: Optional[float] diff --git a/pgactivity/utils.py b/pgactivity/utils.py index eed1b3c0..06733884 100644 --- a/pgactivity/utils.py +++ b/pgactivity/utils.py @@ -174,7 +174,7 @@ def csv_write( ... 'query': 'autovacuum: VACUUM ANALYZE public.pgbench_tellers', ... 'duration': 0.348789, 'wait': False, ... 'io_wait': False, 'is_parallel_worker': False}, - ... {'pid': 25068, 'application_name': 'pgbench', 'database': 'pgbench', + ... {'pid': 25068, 'application_name': 'pgbench', 'database': None, ... 'user': 'postgres', 'client': 'local', 'cpu': 0.0, 'mem': 2.4694780629380646, ... 'read': 278536.76590087387, 'write': 835610.2977026217, ... 'state': 'idle in transaction', @@ -198,7 +198,7 @@ def csv_write( >>> print(content, end="") # doctest: +ELLIPSIS datetimeutc;pid;database;appname;user;client;cpu;memory;read;write;duration;wait;io_wait;state;query "...-...-...T...Z";"25199";"pgbench";"";"None";"local";"0.0";"0.6504979545924837";"0.0";"0.0";"0.348789";"N";"N";"active";"autovacuum: VACUUM ANALYZE public.pgbench_tellers" - "...-...-...T...Z";"25068";"pgbench";"pgbench";"postgres";"local";"0.0";"2.4694780629380646";"278536.76590087387";"835610.2977026217";"0.000105";"N";"N";"idle in transaction";"INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (625, 87, 4368910, -341, CURRENT_TIMESTAMP);" + "...-...-...T...Z";"25068";"";"pgbench";"postgres";"local";"0.0";"2.4694780629380646";"278536.76590087387";"835610.2977026217";"0.000105";"N";"N";"idle in transaction";"INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (625, 87, 4368910, -341, CURRENT_TIMESTAMP);" "...-...-...T...Z";"25379";"pgbench";"pgbench";"postgres";"local";"N/A";"N/A";"N/A";"N/A";"0";"N";"N/A";"active";"UPDATE pgbench_branches SET bbalance = bbalance + -49 WHERE bid = 73;" "...-...-...T...Z";"25392";"pgbench";"pgbench";"postgres";"local";"N/A";"N/A";"N/A";"N/A";"0";"N";"N/A";"active";"BEGIN;" """ @@ -239,7 +239,7 @@ def yn_na(value: Optional[bool]) -> str: for p in procs: dt = datetime.utcnow().strftime("%Y-%m-%dT%H:%m:%SZ") pid = p.get("pid", "N/A") - database = p.get("database", "N/A") + database = p.get("database", "N/A") or "" appname = p.get("application_name", "N/A") user = p.get("user", "N/A") client = p.get("client", "N/A")