From 36df6d5c8af70498971ee5b080f7fe1572c8290d Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Mon, 13 Jan 2025 12:23:50 +0530 Subject: [PATCH] Fix an issue where using the binary cursor, utf-8 decode error comes up. #8199 --- web/pgadmin/utils/driver/psycopg3/typecast.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/web/pgadmin/utils/driver/psycopg3/typecast.py b/web/pgadmin/utils/driver/psycopg3/typecast.py index 7ab4976ae..eddcf8313 100644 --- a/web/pgadmin/utils/driver/psycopg3/typecast.py +++ b/web/pgadmin/utils/driver/psycopg3/typecast.py @@ -20,6 +20,7 @@ from psycopg.types.net import InetLoader from psycopg.adapt import Loader from ipaddress import ip_address, ip_interface from psycopg._encodings import py_codecs as encodings +from psycopg.pq import Format as _pq_Format configure_driver_encodings(encodings) @@ -176,6 +177,12 @@ def register_binary_typecasters(connection): connection.adapters.register_loader(1001, ByteaLoader) + connection.adapters.register_loader(17, + ByteaBinaryLoader) + + connection.adapters.register_loader(1001, + ByteaBinaryLoader) + def register_array_to_string_typecasters(connection=None): type_array = PSYCOPG_SUPPORTED_BUILTIN_ARRAY_DATATYPES +\ @@ -212,6 +219,13 @@ class ByteaLoader(Loader): return 'binary data' if data is not None else None +class ByteaBinaryLoader(Loader): + format = _pq_Format.BINARY + + def load(self, data): + return 'binary data' if data is not None else None + + class TextLoaderpgAdmin(TextLoader): def load(self, data): postgres_encoding, python_encoding = get_encoding(