]> 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 09:48:01 +0000 (10:48 +0100)
Close #503

psycopg/psycopg/_typeinfo.py

index 519815f01c5a9a2dbe70d7d49d6b6fb765615833..f33866175606281995e470c988eecfbef1924e2b 100644 (file)
@@ -15,6 +15,7 @@ from . import sql
 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
@@ -93,6 +94,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()
@@ -107,6 +110,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()