# the role of unknown, so it can be cast automatically to other types).
adapters.register_dumper(str, StrBinaryDumper)
adapters.register_dumper(str, StrDumperUnknown)
+
adapters.register_loader(postgres.INVALID_OID, TextLoader)
adapters.register_loader("bpchar", TextLoader)
adapters.register_loader("name", TextLoader)
adapters.register_loader("text", TextLoader)
adapters.register_loader("varchar", TextLoader)
+ adapters.register_loader('"char"', TextLoader)
adapters.register_loader("bpchar", TextBinaryLoader)
adapters.register_loader("name", TextBinaryLoader)
adapters.register_loader("text", TextBinaryLoader)
adapters.register_loader("varchar", TextBinaryLoader)
+ adapters.register_loader('"char"', TextBinaryLoader)
adapters.register_dumper(bytes, BytesDumper)
adapters.register_dumper(bytearray, BytesDumper)
adapters.register_dumper(bytes, BytesBinaryDumper)
adapters.register_dumper(bytearray, BytesBinaryDumper)
adapters.register_dumper(memoryview, BytesBinaryDumper)
+
adapters.register_loader("bytea", ByteaLoader)
adapters.register_loader(postgres.INVALID_OID, ByteaBinaryLoader)
adapters.register_loader("bytea", ByteaBinaryLoader)
assert cur.fetchone()[0] is True
-@pytest.mark.parametrize("typename", ["text", "varchar", "name", "bpchar"])
+@pytest.mark.parametrize(
+ "typename", ["text", "varchar", "name", "bpchar", '"char"']
+)
@pytest.mark.parametrize("fmt_out", [pq.Format.TEXT, pq.Format.BINARY])
def test_load_1char(conn, typename, fmt_out):
cur = conn.cursor(binary=fmt_out)
for i in range(1, 256):
+ if typename == '"char"' and i > 127:
+ # for char > 128 the client receives only 194 or 195.
+ continue
+
cur.execute(f"select chr(%s)::{typename}", (i,))
res = cur.fetchone()[0]
assert res == chr(i)