2
2
import logging
3
3
import re
4
4
from argparse import Namespace
5
+ from functools import partial
5
6
from typing import Dict , List , Optional
6
7
7
8
import attr
@@ -68,6 +69,7 @@ class Data:
68
69
pg_conn : Connection
69
70
pg_version : str
70
71
pg_num_version : int
72
+ server_encoding : str
71
73
min_duration : float
72
74
filters : Filters
73
75
dsn_parameters : Dict [str , str ]
@@ -103,10 +105,13 @@ def pg_connect(
103
105
if pg .server_version (pg_conn ) >= 130000 :
104
106
pg .execute (pg_conn , queries .get ("disable_log_min_duration_sample" ))
105
107
pg_version = pg_get_short_version (pg_get_version (pg_conn ))
108
+ server_encoding = pg_conn .info .parameter_status ("server_encoding" )
109
+ assert server_encoding is not None
106
110
return cls (
107
111
pg_conn ,
108
112
pg_version ,
109
113
pg .server_version (pg_conn ),
114
+ server_encoding ,
110
115
min_duration = min_duration ,
111
116
failed_queries = FailedQueriesInfo (),
112
117
filters = filters ,
@@ -412,7 +417,7 @@ def pg_get_activities(self, duration_mode: int = 1) -> List[RunningProcess]:
412
417
"min_duration" : self .min_duration ,
413
418
"dbname_filter" : self .filters .dbname ,
414
419
},
415
- mkrow = RunningProcess .from_bytes ,
420
+ mkrow = partial ( RunningProcess .from_bytes , self . server_encoding ) ,
416
421
text_as_bytes = True ,
417
422
)
418
423
@@ -439,7 +444,7 @@ def pg_get_waiting(self, duration_mode: int = 1) -> List[WaitingProcess]:
439
444
"min_duration" : self .min_duration ,
440
445
"dbname_filter" : self .filters .dbname ,
441
446
},
442
- mkrow = WaitingProcess .from_bytes ,
447
+ mkrow = partial ( WaitingProcess .from_bytes , self . server_encoding ) ,
443
448
text_as_bytes = True ,
444
449
)
445
450
@@ -468,7 +473,7 @@ def pg_get_blocking(self, duration_mode: int = 1) -> List[BlockingProcess]:
468
473
"min_duration" : self .min_duration ,
469
474
"dbname_filter" : self .filters .dbname ,
470
475
},
471
- mkrow = BlockingProcess .from_bytes ,
476
+ mkrow = partial ( BlockingProcess .from_bytes , self . server_encoding ) ,
472
477
text_as_bytes = True ,
473
478
)
474
479
0 commit comments