@cython.freelist(8)
cdef class CDumper:
+
cdef readonly object cls
- cdef public libpq.Oid oid
cdef pq.PGconn _pgconn
+ oid = oids.INVALID_OID
+
def __init__(self, cls, context: Optional[AdaptContext] = None):
self.cls = cls
conn = context.connection if context is not None else None
cdef class BoolDumper(CDumper):
format = PQ_TEXT
-
- def __cinit__(self):
- self.oid = oids.BOOL_OID
+ oid = oids.BOOL_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef char *buf = CDumper.ensure_size(rv, offset, 1)
cdef class BoolBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.BOOL_OID
+ oid = oids.BOOL_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef char *buf = CDumper.ensure_size(rv, offset, 1)
cdef class DateDumper(CDumper):
format = PQ_TEXT
-
- def __cinit__(self):
- self.oid = oids.DATE_OID
+ oid = oids.DATE_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef Py_ssize_t size;
cdef class DateBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.DATE_OID
+ oid = oids.DATE_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int32_t days = PyObject_CallFunctionObjArgs(
@cython.final
cdef class TimeDumper(_BaseTimeTextDumper):
- def __cinit__(self):
- self.oid = oids.TIME_OID
+ oid = oids.TIME_OID
cpdef upgrade(self, obj, format):
if not obj.tzinfo:
@cython.final
cdef class TimeTzDumper(_BaseTimeTextDumper):
- def __cinit__(self):
- self.oid = oids.TIMETZ_OID
+ oid = oids.TIMETZ_OID
@cython.final
cdef class TimeBinaryDumper(_BaseTimeDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.TIME_OID
+ oid = oids.TIME_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int64_t micros = cdt.time_microsecond(obj) + 1000000 * (
cdef class TimeTzBinaryDumper(_BaseTimeDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.TIMETZ_OID
+ oid = oids.TIMETZ_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int64_t micros = cdt.time_microsecond(obj) + 1_000_000 * (
@cython.final
cdef class DatetimeDumper(_BaseDatetimeTextDumper):
- def __cinit__(self):
- self.oid = oids.TIMESTAMPTZ_OID
+ oid = oids.TIMESTAMPTZ_OID
cpdef upgrade(self, obj, format):
if obj.tzinfo:
@cython.final
cdef class DatetimeNoTzDumper(_BaseDatetimeTextDumper):
- def __cinit__(self):
- self.oid = oids.TIMESTAMP_OID
+ oid = oids.TIMESTAMP_OID
@cython.final
cdef class DatetimeBinaryDumper(_BaseDatetimeDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.TIMESTAMPTZ_OID
+ oid = oids.TIMESTAMPTZ_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
delta = obj - pg_datetimetz_epoch
cdef class DatetimeNoTzBinaryDumper(_BaseDatetimeDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.TIMESTAMP_OID
+ oid = oids.TIMESTAMP_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
delta = obj - pg_datetime_epoch
cdef class TimedeltaDumper(CDumper):
format = PQ_TEXT
+ oid = oids.INTERVAL_OID
cdef int _style
- def __cinit__(self):
- self.oid = oids.INTERVAL_OID
-
- def __init__(self, oid: int, context: Optional[AdaptContext] = None):
- super().__init__(oid, context)
+ def __init__(self, cls, context: Optional[AdaptContext] = None):
+ super().__init__(cls, context)
cdef const char *ds = _get_intervalstyle(self._pgconn)
if ds[0] == b's': # sql_standard
cdef class TimedeltaBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.INTERVAL_OID
+ oid = oids.INTERVAL_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int64_t micros = (
@cython.final
cdef class Int2Dumper(_NumberDumper):
- def __cinit__(self):
- self.oid = oids.INT2_OID
+ oid = oids.INT2_OID
@cython.final
cdef class Int4Dumper(_NumberDumper):
- def __cinit__(self):
- self.oid = oids.INT4_OID
+ oid = oids.INT4_OID
@cython.final
cdef class Int8Dumper(_NumberDumper):
- def __cinit__(self):
- self.oid = oids.INT8_OID
+ oid = oids.INT8_OID
@cython.final
cdef class IntNumericDumper(_NumberDumper):
- def __cinit__(self):
- self.oid = oids.NUMERIC_OID
+ oid = oids.NUMERIC_OID
@cython.final
cdef class Int2BinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.INT2_OID
+ oid = oids.INT2_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int16_t *buf = <int16_t *>CDumper.ensure_size(
cdef class Int4BinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.INT4_OID
+ oid = oids.INT4_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int32_t *buf = <int32_t *>CDumper.ensure_size(
cdef class Int8BinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.INT8_OID
+ oid = oids.INT8_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef int64_t *buf = <int64_t *>CDumper.ensure_size(
cdef class IntNumericBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.NUMERIC_OID
+ oid = oids.NUMERIC_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
# Calculate the number of PG digits required to store the number
cdef class FloatDumper(CDumper):
format = PQ_TEXT
-
- def __cinit__(self):
- self.oid = oids.FLOAT8_OID
+ oid = oids.FLOAT8_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef double d = PyFloat_AsDouble(obj)
cdef class FloatBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.FLOAT8_OID
+ oid = oids.FLOAT8_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef double d = PyFloat_AsDouble(obj)
cdef class DecimalDumper(CDumper):
format = PQ_TEXT
-
- def __cinit__(self):
- self.oid = oids.NUMERIC_OID
+ oid = oids.NUMERIC_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef char *src
cdef class DecimalBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.NUMERIC_OID
+ oid = oids.NUMERIC_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef class StrBinaryDumper(_BaseStrDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.TEXT_OID
+ oid = oids.TEXT_OID
cdef class _StrDumper(_BaseStrDumper):
@cython.final
cdef class StrDumper(_StrDumper):
- def __cinit__(self):
- self.oid = oids.TEXT_OID
+ oid = oids.TEXT_OID
@cython.final
cdef class BytesDumper(CDumper):
format = PQ_TEXT
+ oid = oids.BYTEA_OID
# 0: not set, 1: just single "'" quote, 3: " E'" qoute
cdef int _qplen
def __cinit__(self):
- self.oid = oids.BYTEA_OID
self._qplen = 0
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef class BytesBinaryDumper(CDumper):
format = PQ_BINARY
-
- def __cinit__(self):
- self.oid = oids.BYTEA_OID
+ oid = oids.BYTEA_OID
cdef Py_ssize_t cdump(self, obj, bytearray rv, Py_ssize_t offset) except -1:
cdef char *src