]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix: fix TypeInfo.fetch() with a sql_ascii encoding connection
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 1 Feb 2023 00:59:01 +0000 (01:59 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sat, 4 Feb 2023 13:47:19 +0000 (14:47 +0100)
Close #503

psycopg/psycopg/_typeinfo.py

index 52d5ca7c59ce3804482cf76322921e3dacb80145..08c5e650c5392e5f8b3ef803645fe2f65a10e162 100644 (file)
@@ -14,6 +14,7 @@ from typing_extensions import TypeAlias
 from . import errors as e
 from .abc import AdaptContext, Query
 from .rows import dict_row
+from ._encodings import conn_encoding
 
 if TYPE_CHECKING:
     from .connection import BaseConnection, Connection
@@ -94,6 +95,8 @@ class TypeInfo:
         # or intrans)
         try:
             with conn.transaction():
+                if conn_encoding(conn) == "ascii":
+                    conn.execute("set local client_encoding to utf8")
                 with conn.cursor(row_factory=dict_row) as cur:
                     cur.execute(cls._get_info_query(conn), {"name": name})
                     recs = cur.fetchall()
@@ -108,6 +111,8 @@ class TypeInfo:
     ) -> Optional[T]:
         try:
             async with conn.transaction():
+                if conn_encoding(conn) == "ascii":
+                    await conn.execute("set local client_encoding to utf8")
                 async with conn.cursor(row_factory=dict_row) as cur:
                     await cur.execute(cls._get_info_query(conn), {"name": name})
                     recs = await cur.fetchall()