else:
from psycopg3.adapt import global_adapters as adapters
- adapters.register_dumper(src, cls, format=format)
+ adapters.register_dumper(src, cls)
cdef class CLoader:
else:
from psycopg3.adapt import global_adapters as adapters
- adapters.register_loader(oid, cls, format=format)
+ adapters.register_loader(oid, cls)
def register_builtin_c_adapters():
cdef class IntDumper(CDumper):
+ format = Format.TEXT
+
def __cinit__(self):
self.oid = oids.INT8_OID
cdef class IntBinaryDumper(IntDumper):
+
+ format = Format.BINARY
+
def dump(self, obj) -> bytes:
cdef long long val = PyLong_AsLongLong(obj)
cdef uint64_t *ptvar = <uint64_t *>(&val)
cdef class IntLoader(CLoader):
+
+ format = Format.TEXT
+
cdef object cload(self, const char *data, size_t length):
return PyLong_FromString(data, NULL, 10)
cdef class Int2BinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return PyLong_FromLong(<int16_t>be16toh((<uint16_t *>data)[0]))
cdef class Int4BinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return PyLong_FromLong(<int32_t>be32toh((<uint32_t *>data)[0]))
cdef class Int8BinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return PyLong_FromLongLong(<int64_t>be64toh((<uint64_t *>data)[0]))
cdef class OidBinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return PyLong_FromUnsignedLong(be32toh((<uint32_t *>data)[0]))
cdef class FloatLoader(CLoader):
+
+ format = Format.TEXT
+
cdef object cload(self, const char *data, size_t length):
cdef double d = PyOS_string_to_double(data, NULL, OverflowError)
return PyFloat_FromDouble(d)
cdef class Float4BinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
cdef uint32_t asint = be32toh((<uint32_t *>data)[0])
# avoid warning:
cdef class Float8BinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
cdef uint64_t asint = be64toh((<uint64_t *>data)[0])
cdef char *swp = <char *>&asint
logger.debug("registering optimised numeric c adapters")
IntDumper.register(int)
- IntBinaryDumper.register(int, format=Format.BINARY)
+ IntBinaryDumper.register(int)
IntLoader.register(oids.INT2_OID)
IntLoader.register(oids.INT4_OID)
FloatLoader.register(oids.FLOAT4_OID)
FloatLoader.register(oids.FLOAT8_OID)
- Int2BinaryLoader.register(oids.INT2_OID, format=Format.BINARY)
- Int4BinaryLoader.register(oids.INT4_OID, format=Format.BINARY)
- Int8BinaryLoader.register(oids.INT8_OID, format=Format.BINARY)
- OidBinaryLoader.register(oids.OID_OID, format=Format.BINARY)
- Float4BinaryLoader.register(oids.FLOAT4_OID, format=Format.BINARY)
- Float8BinaryLoader.register(oids.FLOAT8_OID, format=Format.BINARY)
+ Int2BinaryLoader.register(oids.INT2_OID)
+ Int4BinaryLoader.register(oids.INT4_OID)
+ Int8BinaryLoader.register(oids.INT8_OID)
+ OidBinaryLoader.register(oids.OID_OID)
+ Float4BinaryLoader.register(oids.FLOAT4_OID)
+ Float8BinaryLoader.register(oids.FLOAT8_OID)
cdef class BoolDumper(CDumper):
+
+ format = Format.TEXT
+
def __cinit__(self):
self.oid = oids.BOOL_OID
cdef class BoolBinaryDumper(BoolDumper):
+
+ format = Format.BINARY
+
def dump(self, obj) -> bytes:
if obj is True:
return b"\x01"
cdef class BoolLoader(CLoader):
+
+ format = Format.TEXT
+
cdef object cload(self, const char *data, size_t length):
# this creates better C than `return data[0] == b't'`
return True if data[0] == b't' else False
cdef class BoolBinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return True if data[0] else False
logger.debug("registering optimised singletons c adapters")
BoolDumper.register(bool)
- BoolBinaryDumper.register(bool, format=Format.BINARY)
+ BoolBinaryDumper.register(bool)
BoolLoader.register(oids.BOOL_OID)
- BoolBinaryLoader.register(oids.BOOL_OID, format=Format.BINARY)
+ BoolBinaryLoader.register(oids.BOOL_OID)
cdef class StringBinaryDumper(_StringDumper):
+
+ format = Format.BINARY
+
def dump(self, obj) -> bytes:
# the server will raise DataError subclass if the string contains 0x00
if self.is_utf8:
cdef class StringDumper(_StringDumper):
+
+ format = Format.TEXT
+
def dump(self, obj) -> bytes:
cdef bytes rv
cdef char *buf
cdef class TextLoader(CLoader):
+
+ format = Format.TEXT
+
cdef int is_utf8
cdef char *encoding
cdef bytes _bytes_encoding # needed to keep `encoding` alive
return data[:length]
+cdef class TextBinaryLoader(TextLoader):
+ format = Format.BINARY
+
+
cdef class BytesDumper(CDumper):
+
+ format = Format.TEXT
+
cdef Escaping esc
def __cinit__(self):
cdef class BytesBinaryDumper(BytesDumper):
+
+ format = Format.BINARY
+
def dump(self, obj):
return obj
cdef class ByteaLoader(CLoader):
+
+ format = Format.TEXT
+
cdef object cload(self, const char *data, size_t length):
cdef size_t len_out
cdef unsigned char *out = libpq.PQunescapeBytea(
cdef class ByteaBinaryLoader(CLoader):
+
+ format = Format.BINARY
+
cdef object cload(self, const char *data, size_t length):
return data[:length]
logger.debug("registering optimised text c adapters")
StringDumper.register(str)
- StringBinaryDumper.register(str, format=Format.BINARY)
+ StringBinaryDumper.register(str)
TextLoader.register(oids.INVALID_OID)
TextLoader.register(oids.BPCHAR_OID)
- TextLoader.register(oids.BPCHAR_OID, format=Format.BINARY)
TextLoader.register(oids.NAME_OID)
- TextLoader.register(oids.NAME_OID, format=Format.BINARY)
TextLoader.register(oids.TEXT_OID)
- TextLoader.register(oids.TEXT_OID, format=Format.BINARY)
TextLoader.register(oids.VARCHAR_OID)
- TextLoader.register(oids.VARCHAR_OID, format=Format.BINARY)
+ TextBinaryLoader.register(oids.BPCHAR_OID)
+ TextBinaryLoader.register(oids.NAME_OID)
+ TextBinaryLoader.register(oids.TEXT_OID)
+ TextBinaryLoader.register(oids.VARCHAR_OID)
BytesDumper.register(bytes)
BytesDumper.register(bytearray)
BytesDumper.register(memoryview)
- BytesBinaryDumper.register(bytes, format=Format.BINARY)
- BytesBinaryDumper.register(bytearray, format=Format.BINARY)
- BytesBinaryDumper.register(memoryview, format=Format.BINARY)
+ BytesBinaryDumper.register(bytes)
+ BytesBinaryDumper.register(bytearray)
+ BytesBinaryDumper.register(memoryview)
ByteaLoader.register(oids.BYTEA_OID)
- ByteaBinaryLoader.register(oids.BYTEA_OID, format=Format.BINARY)
- ByteaBinaryLoader.register(oids.INVALID_OID, format=Format.BINARY)
+ ByteaBinaryLoader.register(oids.BYTEA_OID)
+ ByteaBinaryLoader.register(oids.INVALID_OID)